簡體   English   中英

JNI失敗,並顯示“ VM初始化期間發生錯誤”

[英]JNI fails with 'Error occurred during initialization of VM'

根據JNI文檔,在嘗試啟動JVM實例時,我僅需要jvm.dll。 但是,如果僅將jvm.dll放在應用程序所在的文件夾中,則會出現以下錯誤:

VM初始化期間發生錯誤無法加載本機庫:找不到依賴庫

我的代碼可以運行的唯一方法是,將jdk \\ jre \\ bin \\ server文件夾(包含jvm.dll)放在環境路徑中。 看來JNI分別依賴於jdk \\ jre \\ bin和jdk \\ jre \\ lib文件夾中的其他一些dll和jar文件。 實際上,我通過將文件夾復制到其他位置,在我的環境路徑中使用該文件夾,然后慢慢取走jvm.dll以外的文件/文件夾,直到它停止工作,進行了測試。

誰能解釋我想做錯什么? 我如何才能使我的代碼僅依賴jvm.dll而沒有其他要求。 提前致謝!

您不能讓代碼僅依賴於jvm.dll。 jvm.dll只是通往整個JRE的網關。 您不能只選擇一些文件並將其復制到某個地方。 如果要運行Java,則需要完整的Java Runtime Environment。

將jvm.dll保留在原處,然后從那里加載它。 為此,您可以將DLL放在PATH中的文件夾中。 或者,您可以從注冊表中確定其位置,並通過LoadLibraryGetProcAddress獲取jvm函數。

如果以后想要/必須使用專用JRE交付應用程序,則可以省略一些文件。 Oracle在某處有一個文檔,可以忽略哪些文件,但是我沒有可用的鏈接,反正它只有幾個文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM