首页 > 解决方案 > macOS 通过双击启动 jar 文件

问题描述

我有一个可执行的 jar 文件,可以通过以下命令在我的 macOS 系统上正常执行:

java -jar Hello.jar

但是,当我尝试双击它时,它会暂停,然后最终显示一个弹出对话框,说

无法启动 Java JAR 文件“Hello.jar”。检查控制台是否有可能的错误或消息。

我在网上搜索了很多,所有建议都是从 shell 脚本调用 java 或将 jar 文件包装到本机可执行文件中的明显解决方案。对于这个特定的问题,我想将讨论限制在如何通过双击 jar 文件本身 而不修改 jar 文件来在 macOS 上执行 jar 文件?

我已经用两种类型的 Java 应用程序进行了测试——一种是命令行,一种是 GUI。

命令行应用程序

import java.util.Scanner;

public class Hello {

    public static void main(String[] args) {
        System.out.println("Hello, please enter some input");
        Scanner scan = new Scanner(System.in);
        String s = scan.next();
        System.out.println(s);
        scan.close();
    }

}

然后我使用以下命令进行编译和捆绑:

javac Hello.java
jar cvfe Hello.jar Hello Hello.class

图形用户界面应用

import java.io.File;
import javafx.application.Application;
import javafx.stage.FileChooser;
import javafx.stage.Stage;

public class FileChooserExample extends Application {
    public static void main(String[] args) {
        launch(args);
    }

    @Override
    public void start(Stage primaryStage) {
        FileChooser fileChooser = new FileChooser();

        File selectedFile = fileChooser.showOpenDialog(primaryStage);
        System.out.println(selectedFile.getAbsolutePath());
    }
}

它的编译方式与命令行应用程序相同。有趣的是,图形用户界面在双击 Windows 时有效,但在 macOS 上出现错误。如何在 macOS 上通过双击 jar 文件本身而不修改 jar 文件来执行 jar 文件?

编辑:如果系统尚未安装 Java,我也无法在系统上加载任何其他可执行文件。我最好寻找一种方法来通过使用任何标准 Java 发行版(例如,OpenJDK、Oracle 等)的系统配置来做到这一点。

标签: javamacosjar

解决方案


您可以编写一个简单的基于文档的应用程序,它接收一个 jar 文件并使用 java 命令执行它。

一旦你有了它,请按照以下步骤在双击 jar 文件时使其成为处理程序:

  1. 在 Finder 中选择任何 jar 文件。
  2. 右键单击它并选择“获取信息”
  3. 在“打开方式”下,选择您的 jar-opener 应用程序并单击“全部更改”,以便此新选择适用于所有 jar。

请注意,用于打开应用程序的选择对话框最初仅限于“推荐应用程序”。底部有一个组合框,可让您将其更改为“所有应用程序”


推荐阅读