【问题标题】:Is it possible to get java.exe executable inside the Java.runtime folder built from javafx maven plugin是否可以在从 javafx maven 插件构建的 Java.runtime 文件夹中获取 java.exe 可执行文件
【发布时间】:2016-09-14 23:29:28
【问题描述】:

我正在使用 javafx maven plugin 在 mac osx 上构建一个应用程序。该插件在构建过程中自动在Java.runtime 文件夹内创建完整的JRE。但它里面不包含java.exe

我想在应用程序内启动jar,但为此我还需要在应用程序内执行java。如果我将系统 java bin 文件夹中的 java 可执行文件粘贴到我的应用程序的 Java 运行时文件夹中,我可以启动我的 jar(问题得到解决),但我无法将此应用程序启动到 mac 应用商店,因为Java 可执行文件是使用 Developer ID Application: Oracle America, Inc. 签名的代码,并且捆绑标识符为 net.java.openjdk.cmd。这不允许我的应用程序上传到 iTunes。

有什么出路吗,使用javafx maven plugin 在构建过程中,我还可以在我的应用程序中获取 java 可执行文件,而不是从我的应用程序中的系统 java 复制它,它具有不同的代码签名。

【问题讨论】:

    标签: java maven javafx javafx-8 maven-plugin


    【解决方案1】:

    与其尝试在 Java 中实现依赖于系统的代码,不如使用 Java 中可用的工具来执行当前 JRE 中的 jar。可以创建一个 URLClassLoader https://docs.oracle.com/javase/7/docs/api/java/net/URLClassLoader.html 链接到您的 jar(以及任何依赖项)。从那里您可以使用反射从该类加载器加载您的主类,并执行它。除非您需要对操作系统状态进行实际更改,例如执行 SUID,否则无需启动新的 JRE(需要大量消耗 RAM)。

    如果您需要执行具有特权操作的 jar,请参阅相关问题:Signed applet loads signed jar-files using URLClassLoader with security issue

    【讨论】:

    • 谢谢你。我将尝试使用 URL 类加载器来加载我的 jar。如果这个解决方法有效,我一定会发布它
    猜你喜欢
    • 1970-01-01
    • 2019-09-18
    • 1970-01-01
    • 2012-09-19
    • 1970-01-01
    • 2018-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多