war包部署在tomcat下,使用windows service服務方式啟動tomcat服務器,在包含調用dll的模塊,報dll找不到問題的解決辦法


問題描述:

開發了一個需要調用dll的java web程序,在idea開發環境下運行調試沒問題,可以正常運行,在tomcat/bin下,運行批處理startup.bat,啟動tomcat服務器,也可以正常運行。唯獨在windows service方式下,使用啟動服務的方式,運行tomcat/webapps/下的web程序,不需要調用dll的邏輯,運行正常,但是包含需要調用第三方dll的地方,就報錯誤,提示 在jre/bin的目錄下找不到dll,明明dll就在這個目錄下。這個問題困惑了好幾天。

提前說明:配置了JAVA_HOME\JRE_HOME環境變量。

JAVA_HOME=C:\Program Files\Java\jdk1.8.0_131
JRE_HOME=C:\Program Files\Java\jdk1.8.0_131\jre

最終的解決辦法:

說法一:把依賴的dll放在Tomcat安裝目錄的bin文件夾,與startup.bat處於同級目錄下才可以加載dll成功。這是我最后采用的方式。也是唯一可以使用的方法。(

針對我的環境是這樣,windows下是這樣的,linux下,還沒測試,網上說,Linux下,將文件放在 /user/local/bin 中,linux中jar依賴的是so文件)

 

在此鳴謝一下這幾篇文章的作者

參考了很多文章,都不行:

1.在基於tomcat的web project中加載dll文件的方法(來源於實際項目經驗) 這篇文章直接解決了我的問題,把dll直接copy到tomcat/bin目錄下,也就是tomcat運行的起始目錄下。

2.Java工作筆記:部署Tomcat時使用jni和jna調用DLL文件的問題,參見第五條。

3.Java加載dll或so庫文件的路徑 java.library.path (擴展視野,本次沒起到什么用處)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM