最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

解決Java 部署Tomcat時使用jni和jna調(diào)用DLL文件的問題

 更新時間:2020年11月25日 10:31:51   作者:呆萌的我  
這篇文章主要介紹了解決Java 部署Tomcat時使用jni和jna調(diào)用DLL文件的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

我的前一篇博客提到,我們公司項(xiàng)目的restful框架中要用到底層的DLL C++庫,最后經(jīng)過測試驗(yàn)證結(jié)果選擇采用JNA方法來調(diào)DLL庫。

之后基礎(chǔ)框架在IDEA中的jetty服務(wù)中調(diào)試成功,但是在部署到Tomcat上時出現(xiàn)了無法加載DLL庫的狀況,只能現(xiàn)學(xué)現(xiàn)賣了。

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

在Tomcat中加載dll,供其它接口調(diào)用:

在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"));語句查看都有哪些系統(tǒng)調(diào)默認(rèn)調(diào)用的文件路徑。Tomcat會在這些目錄下尋找要加載的文件、庫等。

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

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

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

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

Native.loadLibrary(“C:\Program Files (x86)\Java\jdk1.8.0_51\bin\ DLLname.dll”, classname.class);

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

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

總結(jié):

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

補(bǔ)充知識:正確配置java jdk環(huán)境變量方式 及 配置tomcat后執(zhí)行startup.bat閃退原因分析

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

下面分享一下正確配置java環(huán)境變量的方法.因?yàn)楹芏嘬浖倪\(yùn)行都需要基于配置java環(huán)境變量的基礎(chǔ)上.

以配置jdk1.8為例:

1 安裝jdk1.8

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

2 配置環(huán)境變量

安裝完之后,就是配置環(huán)境變量:

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

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

即 %JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;

JAVA_HOME和Path配置截圖:

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

注意:

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

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

調(diào)試成功后,記得把pause去掉

(注意;有時java環(huán)境變量雖沒有正確配置,但不影響eclipe的運(yùn)行.但若沒有正確配置java環(huán)境變量,就會導(dǎo)致配置tomcat后,執(zhí)行startup.bat出現(xiàn)閃退現(xiàn)象.)

正確配置java環(huán)境變量方式,見前面所示。

以上這篇解決Java 部署Tomcat時使用jni和jna調(diào)用DLL文件的問題就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Presto支持Elasticsearch數(shù)據(jù)源配置詳解

    Presto支持Elasticsearch數(shù)據(jù)源配置詳解

    這篇文章主要為大家介紹了Presto支持Elasticsearch數(shù)據(jù)源配置詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-12-12
  • springboot寶塔簡單部署的實(shí)現(xiàn)示例

    springboot寶塔簡單部署的實(shí)現(xiàn)示例

    通過使用Spring Boot,可以快速構(gòu)建出高效、可擴(kuò)展的應(yīng)用程序,而寶塔面板則提供了簡單易用的網(wǎng)站管理和維護(hù)工具,本文將詳細(xì)介紹如何將Spring Boot應(yīng)用程序與寶塔面板進(jìn)行集成,實(shí)現(xiàn)自動化部署、配置管理等操作
    2023-11-11
  • Java判斷主機(jī)是否能ping通代碼實(shí)例

    Java判斷主機(jī)是否能ping通代碼實(shí)例

    這篇文章主要介紹了Java判斷主機(jī)是否能ping通代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-01-01
  • springboot與springmvc基礎(chǔ)入門講解

    springboot與springmvc基礎(chǔ)入門講解

    本篇文章主要介紹了詳解快速搭建Spring Boot+Spring MVC,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2021-07-07
  • Java內(nèi)存模型的深入講解

    Java內(nèi)存模型的深入講解

    這篇文章主要給大家介紹了關(guān)于Java內(nèi)存模型的相關(guān)資料,我們常說的JVM內(nèi)存模式指的是JVM的內(nèi)存分區(qū),而Java內(nèi)存模式是一種虛擬機(jī)規(guī)范,需要的朋友可以參考下
    2021-07-07
  • JDK源碼白話解讀之ThreadLocal篇

    JDK源碼白話解讀之ThreadLocal篇

    其實(shí)網(wǎng)上有很多關(guān)于ThreadLocal的文章了,有不少文章也已經(jīng)寫的非常好了。但是很多同學(xué)反應(yīng)還有一些部分沒有講解的十分清楚,還是有一定的疑惑沒有想的十分清楚
    2022-02-02
  • java正則表達(dá)式驗(yàn)證郵箱、電話號碼示例

    java正則表達(dá)式驗(yàn)證郵箱、電話號碼示例

    這篇文章主要介紹了java正則表達(dá)式驗(yàn)證郵箱、電話號碼示例,需要的朋友可以參考下
    2014-03-03
  • Zookeeper全局唯一ID生成方案解析

    Zookeeper全局唯一ID生成方案解析

    這篇文章主要介紹了Zookeeper全局唯一ID生成方案解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-12-12
  • 在java中 利用匿名內(nèi)部類進(jìn)行較簡潔的雙括弧初始化的方法

    在java中 利用匿名內(nèi)部類進(jìn)行較簡潔的雙括弧初始化的方法

    本篇文章小編將為大家介紹,關(guān)于在java中 利用匿名內(nèi)部類進(jìn)行較簡潔的雙括弧初始化的方法,有需要的朋友可以參考一下
    2013-04-04
  • Java?NIO?Buffer實(shí)現(xiàn)原理詳解

    Java?NIO?Buffer實(shí)現(xiàn)原理詳解

    本篇文章主要對NIO核心三件套:緩沖區(qū)(Buffer)、選擇器?(Selector)和通道(Channel),其中之一的緩沖區(qū)Buffer實(shí)現(xiàn)原理的學(xué)習(xí)總結(jié)。感興趣的小伙伴可以了解一下
    2021-11-11

最新評論

沙坪坝区| 沾益县| 嘉荫县| 和平县| 桦川县| 安福县| 维西| 浏阳市| 巫山县| 瓮安县| 宝清县| 开鲁县| 衡水市| 定西市| 孝义市| 富蕴县| 克拉玛依市| 会泽县| 陆河县| 梅河口市| 武强县| 桂东县| 石嘴山市| 县级市| 上虞市| 和政县| 呼玛县| 姚安县| 闻喜县| 清丰县| 仙居县| 洛扎县| 朝阳县| 武城县| 班戈县| 商城县| 岳普湖县| 信阳市| 台东市| 井冈山市| 繁昌县|