2011-09-22 47 views
3

我的應用程序包含一個使用JNI調用java程序的C++ exe文件,因此需要jvm.dll。但是,我希望自己的應用程序能夠使用自己的嵌入式jre,但是在複製JAVA_HOME中找到的jre6文件夾並將其添加到我的安裝程序後,它無法運行程序(虛擬機初始化期間發生錯誤無法加載本機庫:Can找不到依賴庫),當我在jvm.dll上使用依賴關係walker時,它說它找不到gpsvc.dll,IEShims.dll和sysntfy.dll。在我嘗試將這些dll拷貝到與jvm.dll相同的文件夾後,依賴walker告訴我gpsvc.dll和sysntfy.dll是64位,它應該是x86。問題是,那些是我係統上唯一的dll,我該怎麼辦?用我的應用程序打包一個jre

回答

1

您可以從相應的網站,即從this one下載所需的DLL。

+0

好吧我設法找到sysntfy.dll和依賴walker只是拋出一個錯誤的gpsvc.dll;我在線閱讀,gpsvc.dll只有x64版本,我應該怎麼做才能解決這個問題? – shawn

+0

嗯,它不是,因爲它是Microsoft系統策略客戶端庫。您可以從http://www.dll-download-system.com/home/g-dlls-not-system-/gpsvc.dll/details.html – wanderlust

2

Java虛擬機包含的不僅僅是jvm.dll。您需要重新分發整個JVM軟件包並將其安裝到用戶的機器上,而不是將jvm.dll添加到您的應用程序中。

在安裝應用程序之前,要求用戶自行下載並安裝JVM可能會容易得多。如果你真的想用你的應用程序重新分配JVM,你需要在Oracle的網站上找到有關這個JVM的確切許可證以及如何去做的文檔。例如,查看JDK 6自述文件的this paragraph

這不像複製jvm.dll和它依賴的其他庫那麼簡單。

+0

得到它其實,我試圖根據http複製整個jre6目錄://stackoverflow.com/questions/5380778/need-help-in-installing-jre和http://www.dobysoft.com/products/nativej/help/html/advanced/bundling.html ...如果這是不重新分配整個jvm包,是什麼?我可以遵循哪些具體步驟? – shawn

+0

在Windows上,當您安裝JRE時,它還會將內容寫入註冊表。僅僅複製JRE目錄還不足以在Windows上安裝它。您需要運行JRE安裝程序。 – Jesper

+0

錯誤我剛剛複製了這些庫,它似乎工作到目前爲止...... – shawn

相關問題