我正在編寫一個使用JNI創建Java虛擬機並在其上運行一些代碼的本機應用程序。此應用程序旨在分發給其他人使用,所以它需要在其他計算機上工作,而不僅僅是我的。這一切在PC上運行良好,但在Mac上,存在各種各樣的問題。OSX - 編譯Java JNI應用程序以僅安裝JRE運行
如果我使用內置在Xcode中的Java框架,然後我可以使用JNI提供了我所有的代碼被編譯成Java版本6 - 因爲Xcode的Java框架,顯然在的Java 6
我能結束的支持如果我安裝JDK並巧妙鏈接到libjvm.dlib,libjli.dylib和libjava.dylib文件,請使用更高版本的Java。在這種情況下一切都很順利,這非常酷。所以我試圖在另一臺沒有安裝JDK的Mac上運行這個,只是JRE,而我發現它不起作用!即使jre/lib/server/libjvm.dylib存在於JDK中,但事實證明它在JRE中不存在。
我的問題是:有沒有什麼辦法可以創建一個Java 8或Java 9虛擬機,可以在只安裝了JRE的Mac OSX上運行,而不是JDK?
嘗試通過'dlopen'加載'jre/lib/server/libjvm.dylib'並調用這些函數。我和你有同樣的問題,並沒有找到解決辦法。到目前爲止,我動態鏈接,並在我自己的比賽中正常工作。我使用'getenv(「JAVA_HOME」)'來查找JRE。 「 – Brandon
」它不起作用!「 - 我們需要繼續努力。它究竟如何失敗?我的第一個猜測是你沒有正確設置dylib的'@ executable_path',但這只是一個預感。 – Ssswift
嗨布蘭登,這是一個很好的解決方案,但我的主要問題是,如果僅安裝Java運行時環境而不是Java開發工具包,jre/lib/server/libjvm.dylib似乎不存在。有什麼辦法可以讓這個只與JRE一起工作? – SynthDan