2016-09-14 39 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

相關問題