我最近从windows切换到mac,并试图通过单击finder中的图标在mac上打开一个可执行的.jar文件。不知何故,结果证明,除了使用终端,mac无法执行.jar文件。经过一些研究,我知道“javapackager”和“jar bundler”是使其可运行的方法,但我找不到任何这些程序的功能下载。那么有没有办法让这些程序可以运行呢?
hmtdttj41#
航运企业的分销模式 jar 向用户提交一个文件,然后期望他们知道如何处理它是过时的——oracle或多或少地承认,绝大多数桌面java应用程序不是现在,也从来没有这样部署过:他们已经停止支持“jre”的想法。这是多少有点正式的(因为oracle的产品明确认可了这种模式)过去的工作方式:app developer制作了一个java应用程序,将其转换成一堆jar文件,并将其作为zip文件或附带一个非常简单的安装程序,只需将它们复制到某个地方即可。应用程序用户与oracle签约下载jre;这个jre的维护(因为有人需要更新这个东西,或者至少告诉用户它有安全漏洞,如果发生的话)完全是用户(或者可能是os维护者)和oracle之间的一种安排;appdeveloper对此没有参与,也没有控制权。如果没有可用的jre,用户必须处理这个问题,app developer对此没有真正的控制权。appdeveloper多多少少只是祈祷他们的应用程序在双击jar时,无论使用什么jre都能正常工作。如果是错误的版本,就不能包含遗留通知或类似的内容,甚至不能在jar文件中有意义地指定与之兼容的java版本。这是过时的,因为oracle已经停止提供jre,也不再希望与地球上的每一个终端用户系统建立关系来支持这些jre而“上钩”。因此,您正在旧的部署机制下工作。如果您是此应用程序的所有者,请更新到新模型(例如使用 jlink 以及 jpackager 制造 .app 把它装在一个集装箱里 .dmg 和普通的mac应用程序一样,这也可以让你签名,有一个漂亮的图标等等)。如果你不是,是时候和这个程序的维护者谈谈,告诉他们这样做。在那之前,你是如何解决这个问题的:去https://adoptopenjdk.net and 下载openjdk。安装它。在你的日程中安排一个定期约会:每个月左右,访问adoptopenjdk.org并查看更新。卸载您拥有的openjdk并安装新的openjdk。不这样做意味着你的系统可能会受到威胁。adoptopenjdk并不是真的适用于这种类型的东西(除了oracle的jre8之外,没有什么东西是真的,但是[a]到目前为止它已经有10年的历史了,而且[b]oracle已经停止支持它,或者很快就会停止支持它,在这一点上这也是一个安全问题),因此,您必须付出努力。双击jar。
jar
jlink
jpackager
.app
.dmg
pbpqsu0x2#
实际上,我是mac的新手,我只是想尝试一下,结果成功了。我要做的是,创建一个maven项目并添加一些插件来创建可执行的jar文件。maven插件端;
<build> <finalName>myExecutableApp</finalName> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-dependency-plugin</artifactId> <version>3.1.2</version> <executions> <execution> <id>copy-dependencies</id> <phase>prepare-package</phase> <goals> <goal>copy-dependencies</goal> </goals> <configuration> <outputDirectory> ${project.build.directory}/libs </outputDirectory> </configuration> </execution> </executions> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <version>3.2.0</version> <configuration> <archive> <manifest> <addClasspath>true</addClasspath> <classpathPrefix>libs/</classpathPrefix> <mainClass> com.rcelik.executable.ExecutableMavenJar </mainClass> </manifest> </archive> </configuration> </plugin> </plugins> </build>
以及一些swing代码,以了解可执行jar文件是否正在运行。
public class ExecutableMavenJar { public static void main(String[] args) { JFrame f=new JFrame(); JButton b=new JButton("click"); b.setBounds(130,100,100, 40); f.add(b); f.setSize(400,500); f.setLayout(null); f.setVisible(true); }
}在代码部分之后,我用maven打包了这个项目。我可以通过双击它来运行可执行jar文件。你能检查一下这种创建可执行jar文件的方法吗。顺便说一句,macos用javalauncher.app打开jar文件,javalauncher.app是默认的。
2条答案
按热度按时间hmtdttj41#
航运企业的分销模式
jar
向用户提交一个文件,然后期望他们知道如何处理它是过时的——oracle或多或少地承认,绝大多数桌面java应用程序不是现在,也从来没有这样部署过:他们已经停止支持“jre”的想法。这是多少有点正式的(因为oracle的产品明确认可了这种模式)过去的工作方式:app developer制作了一个java应用程序,将其转换成一堆jar文件,并将其作为zip文件或附带一个非常简单的安装程序,只需将它们复制到某个地方即可。
应用程序用户与oracle签约下载jre;这个jre的维护(因为有人需要更新这个东西,或者至少告诉用户它有安全漏洞,如果发生的话)完全是用户(或者可能是os维护者)和oracle之间的一种安排;appdeveloper对此没有参与,也没有控制权。
如果没有可用的jre,用户必须处理这个问题,app developer对此没有真正的控制权。
appdeveloper多多少少只是祈祷他们的应用程序在双击jar时,无论使用什么jre都能正常工作。如果是错误的版本,就不能包含遗留通知或类似的内容,甚至不能在jar文件中有意义地指定与之兼容的java版本。
这是过时的,因为oracle已经停止提供jre,也不再希望与地球上的每一个终端用户系统建立关系来支持这些jre而“上钩”。
因此,您正在旧的部署机制下工作。如果您是此应用程序的所有者,请更新到新模型(例如使用
jlink
以及jpackager
制造.app
把它装在一个集装箱里.dmg
和普通的mac应用程序一样,这也可以让你签名,有一个漂亮的图标等等)。如果你不是,是时候和这个程序的维护者谈谈,告诉他们这样做。在那之前,你是如何解决这个问题的:去https://adoptopenjdk.net and 下载openjdk。
安装它。
在你的日程中安排一个定期约会:每个月左右,访问adoptopenjdk.org并查看更新。卸载您拥有的openjdk并安装新的openjdk。不这样做意味着你的系统可能会受到威胁。adoptopenjdk并不是真的适用于这种类型的东西(除了oracle的jre8之外,没有什么东西是真的,但是[a]到目前为止它已经有10年的历史了,而且[b]oracle已经停止支持它,或者很快就会停止支持它,在这一点上这也是一个安全问题),因此,您必须付出努力。
双击jar。
pbpqsu0x2#
实际上,我是mac的新手,我只是想尝试一下,结果成功了。我要做的是,创建一个maven项目并添加一些插件来创建可执行的jar文件。maven插件端;
以及一些swing代码,以了解可执行jar文件是否正在运行。
}
在代码部分之后,我用maven打包了这个项目。我可以通过双击它来运行可执行jar文件。你能检查一下这种创建可执行jar文件的方法吗。顺便说一句,macos用javalauncher.app打开jar文件,javalauncher.app是默认的。