日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

JNA使用问题及解决

發(fā)布時(shí)間:2023/12/20 编程问答 49 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JNA使用问题及解决 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

因項(xiàng)目催得很急,盡管對JNA(Java調(diào)用Windows動(dòng)態(tài)庫)不熟悉,還是使用了JNA庫。那么使用自己不了解的東西,總是很容易出現(xiàn)各種奇怪的問題。可反過來想想,哪有不存在技術(shù)難點(diǎn)的項(xiàng)目呢?是吧?當(dāng)程序員就是個(gè)辛苦的行業(yè),被項(xiàng)目逼著不停地去學(xué)習(xí),去解決問題;但正因如此,程序員也是快樂的人,因?yàn)榻鉀Q問題后,獲得的成就感和喜悅感是很值得的。呵呵,不廢話了,分享下我使用JNA遇到的問題及解決辦法吧。

搜索路徑

1. 項(xiàng)目的根路徑;例:E:\workspace\test
2. 操作系統(tǒng)的全局路徑;C:\WINDOWS 、C:\WINDOWS\system32
3. path指定的路徑。

這是我遇到的一個(gè)問題:

An unexpected error has been detected by Java Runtime Environment: EXCEPTION_ACCESS_VIOLATION
我是將最新的動(dòng)態(tài)庫文件放到 JDK 目錄下,提示的問題是:找不到最新的動(dòng)態(tài)庫文件。
首先需要排除的是,在哪些地方存在這個(gè)動(dòng)態(tài)庫文件,所以用Everything查找ComtradeData.dll文件,全部刪除直至剩下一個(gè)位置存在這個(gè)文件;第二步嘗試將最新的動(dòng)態(tài)庫文件放到 system32 目錄。如果放到 system32 可以了,說明 JDK 目錄的加載路徑有問題,所以沒有 Java 找不到這個(gè)文件。

后面想想,可能是因?yàn)?JAVA_HOME 環(huán)境變量,造成 JDK 目錄沒有加載到 path 目錄的緣故吧。

工作流程

遇到的問題:

failed to create temporary file for jnidispatch: Java.IO.Exception: 系統(tǒng)找不到指定路徑at com.sun.jna.Native.loadNativeLibraryFromJar(Native.java:751)
這個(gè)問題主要是對JNA的工作流程不了解而不知道怎么解決,那么Google就成了最好的幫手。通過搜索,知道JNA的工作流程是會(huì)需要?jiǎng)?chuàng)建臨時(shí)文件的。如果臨時(shí)文件創(chuàng)建不了,就提示這種錯(cuò)誤了。

順便,JNA的實(shí)際實(shí)現(xiàn)方法是如下實(shí)現(xiàn)的 (http://waffle.codeplex.com/discussions/243500):

JNA uses libffi, a magical native implementation that translates Javaunderneath JNA extracts a native DLL into the temporary folder and then loadsWhen the process exits it kills that DLL.
大體意思是,JNA用到 libffi 庫,通過這個(gè)庫將 需要調(diào)用的 DLL 庫加載到一個(gè)臨時(shí)文件,當(dāng)使用完畢后,再釋放 libffi 庫。

然后,知道需要臨時(shí)文件,那么就查找 JNA 的臨時(shí)文件再哪?有兩種情況:一是臨時(shí)文件夾不存在;二是Java對臨時(shí)文件夾沒有寫的權(quán)限。

那JNA的臨時(shí)文件夾路徑在哪呢?網(wǎng)上給出了這幾個(gè)位置:%TMPDIR%/jna, system library load path, %TEMP%, Tomcat's temp dir。

到這時(shí),我發(fā)現(xiàn)了咱們的 tomcat 下沒有 temp 這個(gè)文件夾,馬上創(chuàng)建這個(gè)文件夾試試,呵呵,就解決了!







總結(jié)

以上是生活随笔為你收集整理的JNA使用问题及解决的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。