我的操作系統是64位的。
身份證識別儀調用sdtapi.dll一開始使用如下方法,
//JNAReadCardDll cardDll=(JNAReadCardDll)Native.loadLibrary("C:\\Users\\maqing\\Workspaces\\MyEclipse 8.6\\IDCardManagerSwing\\sdtapi",JNAReadCardDll.class);
String sep = File.separator;
JNAReadCardDll cardDll=(JNAReadCardDll)Native.loadLibrary("sdtapi",JNAReadCardDll.class);
一直報java.lang.UnsatisfiedLinkError: Unable to load library 'sdtapi': 找不到指定的模塊。
后來在網上看到一篇https://wenku.baidu.com/view/5a4a2e202f60ddccda38a01a.html(強烈推薦,程序拷下來可正常運行)
好心人做的身份證識別儀項目,使用的
System.loadLibrary("sdtapi");
closeJN=new JNative("sdtapi","SDT_ClosePort");
這種方式,運行application,報以下錯誤,然后就開始了漫長的64位操作系統加載32sdtapi.dll文件的過程。Can't load IA 32-bit .dll on a AMD 64-bit platform
查找的資料太多,大底的解決流程就是:
首先把sdtapi.dll文件放在C:\Windows\System32
64位的還要放在C:\Windows\SysWOW64
然后regsvr32 sdtapi.dll
run以管理員身份運行
regsvr32 sdtapi.dll
regsvr32 C:\Windows\SysWOW64\sdtapi.dll
嘗試了DirectX修復系統工具,還是報一樣的錯誤。
換了64位別的電腦,報同樣的錯誤。搭了個虛擬機環境,32位winxp,報
開始懷疑是不是dll的問題了。
受到網上一篇文章的啟發(感謝這篇實驗文,找不到鏈接了T-T),更換tomcat或者JDK,application貌似跟tomcat沒有什么關系,不管那么多了,反正都試一下,32位的jdk以及tomcat都安裝了一遍,一開始找不到配置的地方,最后在
然后程序就正常了,用這種方法,使用Native.loadLibrary這種方式的程序也不報原來那個錯了。
總之,感覺為了解決問題走的彎路都是值得的,但是網上查不到相關的資料,你需要遇到一個問題查找一堆資料解決一個問題,有的時候走的路是錯誤的你也不知道。感謝那些無私分享自己經驗的IT工作者們,向你們學習,同時也想留下點資料供后來者以及自己查詢。
參考資料:https://wenku.baidu.com/view/5a4a2e202f60ddccda38a01a.html
還有很多,沒有保存鏈接,來回重啟電腦解決問題,都沖沒了