是否可以在从javafx maven插件构建的Java.runtime文件夹中获取java.exe可执行文件

时间:2016-09-14 23:29:29

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

我正在使用javafx maven plugin在mac osx上构建应用程序。此插件在构建过程中自动在JRE文件夹中创建完整的Java.runtime。但它里面没有java.exe

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

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

1 个答案:

答案 0 :(得分:1)

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

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