java - 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 等)的系统配置来做到这一点。
解决方案
您可以编写一个简单的基于文档的应用程序,它接收一个 jar 文件并使用 java 命令执行它。
一旦你有了它,请按照以下步骤在双击 jar 文件时使其成为处理程序:
- 在 Finder 中选择任何 jar 文件。
- 右键单击它并选择“获取信息”
- 在“打开方式”下,选择您的 jar-opener 应用程序并单击“全部更改”,以便此新选择适用于所有 jar。
请注意,用于打开应用程序的选择对话框最初仅限于“推荐应用程序”。底部有一个组合框,可让您将其更改为“所有应用程序”
推荐阅读
- javascript - 带有小时/秒的JS倒数计时器在Safari中不起作用
- mocha.js - mochawesome 的问题:TypeError:无法设置未定义的属性“testsRegistered”
- amazon-redshift - 无法使用 ecto 在 redshift 中创建模式迁移表
- python - python argcomplete 和 pyinstaller
- ansible - 当字典存在但不包含任何元素时条件总是失败时的 Ansible
- python - SMbus 的第二个版本是否正确?
- c# - 使用 azure ad 更新 asp.net mvc 应用程序后的身份验证问题
- apache-spark - Spark JobEnd Listner 从 hdfs 路径移动源文件导致文件未找到异常
- javascript - 如何为 mongoDB 文档编写有效的 undo/redo 机制?
- r - 根据R中另一列中的值设置一列的值