java—单击在MacBigSur上运行.jar文件

0ve6wy6x  于 2021-06-27  发布在  Java
关注(0)|答案(2)|浏览(344)

我最近从windows切换到mac,并试图通过单击finder中的图标在mac上打开一个可执行的.jar文件。不知何故,结果证明,除了使用终端,mac无法执行.jar文件。
经过一些研究,我知道“javapackager”和“jar bundler”是使其可运行的方法,但我找不到任何这些程序的功能下载。
那么有没有办法让这些程序可以运行呢?

hmtdttj4

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。

pbpqsu0x

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是默认的。

相关问题