我正在使用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中复制它,该应用程序具有不同的代码签名。
答案 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