亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Java > 正文

解析Java和Eclipse中加載本地庫(.dll文件)的詳細說明

2019-11-26 16:05:47
字體:
來源:轉載
供稿:網友
最近在做的工作要用到本地方法,需要在Java中加載不少動態鏈接庫(以下為方便延用Windows平臺下的簡寫dll,但并不局限于Windows)。剛剛把程序跑通,趕緊把一些心得寫出來,mark。也希望對大家的類似工作有所幫助
首先,應當明確,dll有兩類:(1)Java所依賴的dll和,(2)dll所依賴的dll。正是由于第(2)種dll的存在,才導致了java中加載dll的復雜性大大增加,許多說法都是這樣的,但我實驗的結果卻表明似乎沒有那么復雜,后面會予以詳細闡述。
其次,Java中加載dll的方式也有兩種:(1)通過調用System.loadLibrary(String filename)和,(2)通過調用System.load(String filename)方法。其底層都是通過使用ClassLoader中的loadLibrary(Class fromClass, String name, boolean isAbsolute)方法來實現的,區別僅在于(1)中的filename必須是絕對路徑,(2)中的filename只能是dll名,不允許包含文件夾。
再者,Eclipse是一個相當強大的平臺,其提供的BundleClassLoader的強大是一個很重要的原因,對于dll的加載也有自己一套很別致的做法,值得我們采納。
根據上面的介紹,分兩部分闡述Java中加載dll面臨的主要問題和解決途徑。
1. 在一般Java程序中加載dll
我所做的工作,需要加載的dll如下:
DigitDll.dll 
DsivsAcct.dll
DsivsComm.dll
DsivsTrans.dll
JBPack.dll
XCodeDll.dll
ImageDllCtrl.dll
yhfiche.dll
yhocr.dll
yhbill.dll
TSealSvrDll.dll
TImg.dll
TImage.dll   
直接調用的是TImage中的若干方法,列表中TImage之前的所有其直接或間接依賴的,不僅要把所有的dll load全,更要注意他們之間的依賴關系,被依賴dll一定要先加載,否則就會報錯:UnsatisfiedLinkError。故而,首先應理清dll 之間的依賴關系,上面的列表已經是處理過的了。

接下來是設置JVM的搜索路徑,使其能夠找到你的dll。JVM的搜索路徑由java.library.path系統屬性決定,其默認值為系統環境變量中的PATH 內容。因此,可以通過修改PATH變量來達到設置java.library.path屬性的目的(改變之后Eclipse需要重新啟動),一般的方法是在 PATH中加入dll所在文件夾的絕對路徑。另一種方法是在Java命令的參數中加入“-Djava.library.path=dll所在文件夾的絕對路徑”來設置(可以用;分開多個路徑)。對于Eclipse開發環境上的應用程序,可以通過修改其啟動參數,在VM arguments編輯框中加入前述參數。對于打包出來的Eclipse安裝包,可編輯其啟動目錄下的application.ini(假設其啟動文件為 application.exe),在-vmargs后加入前述參數來設置java.library.path的值。需要注意的是,一旦JVM已經啟動,則無法再修改java.library.path的內容了,也就是說,通過:
System.setProperty("java.library.path", "c:/mylib");
這樣的方式是無法達到目的的,因為該屬性是只讀的。Sun公司的論壇上曾經討論過如何在代碼中修改java.library.path的問題,結論是:不能通過代碼修改!如果嫌"java -Djava.library.path=c:/mylib"這樣的方式寫得太死,也只能是通過shell編程之類的方法對路徑進行預處理,以改善其靈活性了。
如果你的dll是封裝在jar包中的,則需要首先將之解壓縮到一個臨時路徑上,然后再將該路徑加入到Djava.library.path中,或者干脆將其解壓縮到系統路徑上。
2. 在Eclipse平臺上加載dll
上面提到,Java中對本地庫路徑的設置方式做得太死,這也是我自己的切身體會,但令人感到欣慰的是我們的Eclipse平臺的提供了一套比較靈活的做法,通過eclipse提供的BundleClassLoader,你可以將dll封在plugin中,既不需要在使用時解壓縮,也不需要額外設置 java.library.path屬性,BundleClassLoader會自行到以相對plugin根目錄的指定目錄下去查找你的dll,這些目錄是:ws/win32/, os/win32/x86/, os/win32/, nl/zh/CN/, nl/zh/,見org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader和 org.eclipse.core.runtime.internal.adaptor.EclipseClassLoadingHook。
我的目錄設置是:
.classpath
.cvsignore
.project
build.properties
classes
CVS
lib
META-INF
os
plugin.xml
src
我把所有的dll都放到了os下面的win32目錄內,同樣可以建立ws/win32等目錄用于放置本地庫。如此處理之后,不用再修改任何系統變量就可以順利加載本地庫了。
另外,Eclipse還在MANIFEST文件中提供了Bundle-NativeCode的設置項,也是用于加載本地庫的,有待進一步研究
本文匆匆而就,希望對自己對大家都能有所幫助
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩av在线免播放器| 热门国产精品亚洲第一区在线| 欧美另类极品videosbestfree| 国产91ⅴ在线精品免费观看| 日本久久中文字幕| 97香蕉超级碰碰久久免费的优势| 欧美日韩亚洲高清| 成人黄色免费片| 97久久精品在线| 欧美精品在线观看| 中文字幕亚洲一区在线观看| 国产欧美一区二区三区在线| 日韩av网站电影| 欧美色播在线播放| 亚洲女人被黑人巨大进入| 国产精品美乳一区二区免费| 欧美日韩激情小视频| 欧美激情日韩图片| 欧美性猛交xxxx乱大交3| 成人性生交大片免费看小说| 亚洲精品一区中文| 91午夜理伦私人影院| 97在线视频观看| 成人h片在线播放免费网站| 三级精品视频久久久久| 日韩精品在线观看视频| 国产成人av在线播放| 亚洲网址你懂得| 性欧美亚洲xxxx乳在线观看| 91在线视频九色| 欧美激情一区二区三区在线视频观看| 日韩在线视频导航| 97超级碰碰碰久久久| 亚洲欧美中文在线视频| 91手机视频在线观看| 日韩在线观看免费高清| 亚洲国产精品小视频| 欧美又大又粗又长| 欧美一区二区三区免费视| 日韩中文在线观看| 国产欧美久久久久久| 欧美精品在线第一页| 欧美激情在线狂野欧美精品| 91中文精品字幕在线视频| 成人精品久久av网站| 国产精品美女网站| 欧美成人免费小视频| 亚洲精品中文字| 81精品国产乱码久久久久久| 26uuu另类亚洲欧美日本老年| 2019日本中文字幕| 国产做受69高潮| 欧美亚洲午夜视频在线观看| 亚洲最新中文字幕| 亚洲第一偷拍网| 欧美一乱一性一交一视频| 国内精品小视频| 精品国产福利在线| 国产精品久久久久久av| 日韩中文在线不卡| 国产视频综合在线| 国产亚洲福利一区| 97视频人免费观看| 亚洲欧洲日产国产网站| 国产最新精品视频| 日韩亚洲综合在线| 亚洲精品成a人在线观看| 精品毛片三在线观看| 欧美激情第1页| 欧美激情一级二级| 欧美亚洲第一页| 精品日本美女福利在线观看| 亚洲精品成人久久| 精品爽片免费看久久| 欧美日韩国产精品一区二区不卡中文| 国产精品九九久久久久久久| 中文字幕亚洲欧美日韩2019| 欧美激情在线有限公司| 欧美电影免费观看高清完整| 午夜免费日韩视频| 日韩av在线电影网| 亚洲精品第一页| 日韩高清电影好看的电视剧电影| 隔壁老王国产在线精品| 精品高清一区二区三区| 18性欧美xxxⅹ性满足| 国产欧美日韩免费看aⅴ视频| 亚洲免费av网址| 亚洲一级免费视频| 国产亚洲一区精品| 精品久久久久久久久久久久| 亚洲精品国产精品国自产在线| 欧美第一淫aaasss性| 91精品免费视频| 久久久久久久久国产精品| 欧美在线性爱视频| 欧美电影免费观看电视剧大全| 欧美一级黄色网| 国产狼人综合免费视频| 国产成人精品在线播放| 亚洲欧美另类自拍| 欧美性感美女h网站在线观看免费| 亚洲码在线观看| 亚洲精品小视频| 91久久久久久久久久| 久久伊人91精品综合网站| 亚洲电影成人av99爱色| 欧美精品日韩三级| 97在线免费观看| 亚洲欧美在线看| 91久久国产综合久久91精品网站| 久久综合国产精品台湾中文娱乐网| 国产成人精品视频在线观看| 69久久夜色精品国产69| 中文在线资源观看视频网站免费不卡| 91精品国产91久久| 亚洲美女av网站| 欧美性资源免费| 国产精品丝袜白浆摸在线| 亚洲欧美日韩成人| 国产精品亚洲第一区| 欧美孕妇毛茸茸xxxx| 在线日韩av观看| 91牛牛免费视频| 欧美中文字幕在线观看| 久久久免费精品视频| 日韩a**站在线观看| 国产在线久久久| 久久视频这里只有精品| 欧美精品在线免费播放| 亚洲人精品午夜在线观看| 成人a级免费视频| 一区二区三区亚洲| 亚洲а∨天堂久久精品9966| 欧美孕妇毛茸茸xxxx| 国产在线播放91| 亚洲国产一区自拍| 俺去亚洲欧洲欧美日韩| 国产成人综合精品在线| 精品国偷自产在线视频99| 日本久久久久久久久| 奇米影视亚洲狠狠色| 欧美一级电影在线| 精品中文视频在线| 国产精品久久久久久久久久久新郎| 在线国产精品播放| 欧美精品久久久久久久久久| 亚洲电影成人av99爱色| 久久精品视频免费播放| 亚洲无线码在线一区观看| 岛国精品视频在线播放| 中文字幕亚洲欧美日韩高清| 欧美一级大片在线观看| 欧美日韩国产第一页| 91免费视频国产| 国产精品久久久久久五月尺| 日韩视频免费中文字幕| 欧美亚洲成人xxx| www.亚洲天堂| 国产成人黄色av| 亚洲天堂网在线观看| 欧美日韩国产黄| 国产一区av在线| 精品少妇v888av|