亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術文章
文章詳情頁

解決Java 部署Tomcat時使用jni和jna調用DLL文件的問題

瀏覽:3日期:2022-08-20 14:42:48

我的前一篇博客提到,我們公司項目的restful框架中要用到底層的DLL C++庫,最后經過測試驗證結果選擇采用JNA方法來調DLL庫。

之后基礎框架在IDEA中的jetty服務中調試成功,但是在部署到Tomcat上時出現了無法加載DLL庫的狀況,只能現學現賣了。

一. 把DLL文件放在Tomcat下的方法:

在Tomcat中加載dll,供其它接口調用:

在Tomcat目錄根下新建一個文件夾,這里就叫DLL吧,<tomcat_home>/DLL;

把需要用到的dll放入新建的DLL目錄下;

編輯<tomcat_home>/conf/catalina.properties,在common.loader后面追加${catalina.home}/DLL;

編輯<tomcat_home>/bin/目錄下的catalina.bat,在rem Copy CATALINA_BASE from CATALINA_HOME if not defined的段落中增加如下語句:

set LD_LIBRARY_PATH=%CATALINA_BASE%DLL

set JAVA_OPTS=-Djava.library.path=%CATALINA_BASE%DLL%JAVA_OPTS%

保存重新啟動Tomcat,deploy war即可。

二. 把DLL文件放在java.library.path路徑下,可以通過System.out.println(System.getProperty('java.library.path'));語句查看都有哪些系統調默認調用的文件路徑。Tomcat會在這些目錄下尋找要加載的文件、庫等。

三. 在使用JNA調用DLL時,總是提示無法加載相應的庫。把DLL文件放在各種路徑下都不起作用。

無奈之下,我換成JNI工具嘗試了一下,結果提示Can’t load IA 32-bit .dll on a AMD 64-bit platform。真相終于浮出了水面,原來是因為JDK和DLL系統不兼容(萬萬沒想到問題出在這里),于是我把DLL重新編譯成64位試了一下,成功部署。

然后我又換成JNA工具后試了一下也成功部署(早該換成JNI試一下,就是因為JNI使用步驟過于繁瑣,所以一直對JNA不死心,結果拖了很長時間),問題解決。

四.使用JNA的時候,大多數網上教程中Native.loadLibrary(“DLL name”, classname.class); 中的第一個參數都是相對路徑。按照編程經驗,這里應該也可以寫成絕對路徑,例如:

Native.loadLibrary(“C:Program Files (x86)Javajdk1.8.0_51bin DLLname.dll”, classname.class);

我這樣試著跑了一下,證明我的猜想是正確的。

五. 把DLL放在Tomcat文件夾下的bin文件中也可以找到。Linux下放在 /user/local/bin 中。這是我最后采用的方式。

總結:

問題可能出在方方面面,需要學習的還很多,經驗也相當重要。同時應該在自己的代碼中建立完整的異常報錯體系,和良好的異常處理習慣。但是我又擔心太多的分支處理會影響整體的性能。還是好好修煉內功才是王道啊。

補充知識:正確配置java jdk環境變量方式 及 配置tomcat后執行startup.bat閃退原因分析

我們用的很多軟件都需要配置環境變量,有的軟件會自動配置環境變量,不需要我們手動配置.而有的必須手動配置環境變量,比如git, eclipse等.

下面分享一下正確配置java環境變量的方法.因為很多軟件的運行都需要基于配置java環境變量的基礎上.

以配置jdk1.8為例:

1 安裝jdk1.8

如圖中所以,打開jdk-xxx.exe,進行安裝jdk,事先建兩個文件夾jdk,jre,用于分別作為jdk和jre的安裝文件夾

2 配置環境變量

安裝完之后,就是配置環境變量:

JAVA_HOME -- 變量值就是jdk的主目錄,圖中已用藍色標出(配置JAVA_HOME變量值時,末尾一定不要加分號)

Path -- 需要配置兩個,jdk的bin目錄和jdk下的jre的bin目錄,如圖中所示:

即 %JAVA_HOME%bin;%JAVA_HOME%jrebin;

解決Java 部署Tomcat時使用jni和jna調用DLL文件的問題

JAVA_HOME和Path配置截圖:

解決Java 部署Tomcat時使用jni和jna調用DLL文件的問題

解決Java 部署Tomcat時使用jni和jna調用DLL文件的問題

配置完之后,可以打開Windows+R.輸入cmd,打開dos窗口,輸入 java 和 javac -version (或java version)來進行驗證java環境變量是否配置成功和查看所配置的jdk版本信息

解決Java 部署Tomcat時使用jni和jna調用DLL文件的問題

解決Java 部署Tomcat時使用jni和jna調用DLL文件的問題

注意:

有些軟件需要嚴格配置java環境變量.比如在配置Tomcat后,執行startup.bat手動啟動tomcat會閃退.原因就是環境變量沒有正確配置.

右鍵startup.bat,編輯,在文本的最后敲上pause,保存后重新運行startup.bat, 這時候窗口不會再閃退,而是停留在桌面上,如果有錯誤信息,這時候會顯示出來,可以根據提示確定是哪里出錯.進而針對性解決.其實90%的原因就是java環境變量沒有正確配置

解決Java 部署Tomcat時使用jni和jna調用DLL文件的問題

調試成功后,記得把pause去掉

解決Java 部署Tomcat時使用jni和jna調用DLL文件的問題

(注意;有時java環境變量雖沒有正確配置,但不影響eclipe的運行.但若沒有正確配置java環境變量,就會導致配置tomcat后,執行startup.bat出現閃退現象.)

正確配置java環境變量方式,見前面所示。

以上這篇解決Java 部署Tomcat時使用jni和jna調用DLL文件的問題就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持好吧啦網。

標簽: Java
相關文章:
主站蜘蛛池模板: 亚洲欧美日韩综合在线播放 | 黄色片视频在线 | 欧美一级毛片片aa视频 | 国产精品成人观看视频免费 | 国产精品福利在线 | 亚洲综合伊人色一区 | 国产性感美女视频 | 在线观看一区二区精品视频 | 在线看的黄色网址 | 亚洲18卡通动漫在线播放 | 在线观看av片永久免费 | 美国一级做a爰片性色毛片 美国人与性xxxxxxx | 免费国产成人手机在线观看 | 欧美激情一级毛片在 | 丁香婷婷亚洲六月综合色 | 国外欧美一区另类中文字幕 | 日韩在线 中文字幕 | 狠狠综合久久久久综合小说网 | 免费人成黄页在线观看69 | 国产中出 | 边吃奶边弄进去男女视频 | 亚洲欧洲第一页 | 欧美日韩精品在线观看 | 特黄大片aaaaa毛片 | 日本欧美国产精品 | 999www成人免费视频 | 在线播放国产不卡免费视频 | 免费一级做a爰片性视频 | 在线精品观看 | 一级毛片私人影院免费 | 污污小视频在线观看 | 桃色视频网| 人成免费 | 99久久精品国产亚洲 | 日韩视频免费在线观看 | 国产精品久久久久久久久久一区 | 手机免费黄色网址 | 免费在线不卡视频 | 龙口护士门91午夜国产在线 | 在线高清视频观看vvvv | 美女大片高清特黄a大片 |