2016-09-14 40 views
-1

我正在使用javafx maven plugin在mac osx上构建应用程序。这个插件会在构建过程中自动在​​文件夹内创建完整的JRE。但它不包含里面的java.exe是否有可能在由javafx maven插件构建的Java.runtime文件夹中获取java.exe可执行文件

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

是否有任何出路,在哪里使用javafx maven plugin我也得到了在我的应用程序内的Java可执行文件在构建过程比在我的应用程序具有不同的代码签名我的系统Java复制它。

回答

1

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

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

+0

谢谢你。我要尝试使用URL类装载器。如果这个变通办法来加载我的罐子,我将发布它肯定 – yukzz

相关问题