1. 程式人生 > >java.lang.UnsatisfiedLinkError: no jacob-1.14.3-x64 in java.library.path問題的解決方法

java.lang.UnsatisfiedLinkError: no jacob-1.14.3-x64 in java.library.path問題的解決方法

首先jacob是用來將word轉成html的一個工具類庫,在專案中使用過程中出現錯誤

Exception in thread "main" java.lang.UnsatisfiedLinkError: no jacob-1.14.3-x64 in java.library.path
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1738)
at java.lang.Runtime.loadLibrary0(Runtime.java:823)
at java.lang.System.loadLibrary(System.java:1028)
at com.jacob.com.LibraryLoader.loadJacobLibrary(LibraryLoader.java:184)
at com.jacob.com.JacobObject.<clinit>(JacobObject.java:108)
at Test.wordToHtml(Test.java:10)
at Test.main(Test.java:41)

意思是在jdk下沒有找到jacob對應的dll檔案。

解決辦法:

1. 首先進入jacob的網站現在最新的jacob包(這個可以使用當前版本的jacob,這裡我做了版本升級),並將zip包中的dll檔案放置到X:\Windows\system32目錄下,X為你的作業系統碟符,根據自己的系統版本放置不同的dll檔案,名稱上有寫的

2. 將dll檔案放到當前JDk和jre的lib目錄中,然後測試問題解決。

測試程式

public static boolean wordToHtml(String inPath, String toPath) {
// 啟動word
ActiveXComponent axc = new ActiveXComponent("Word.Application");
boolean flag = false;
try {
// 設定word不可見
axc.setProperty("Visible", new Variant(false));
Dispatch docs = axc.getProperty("Documents").toDispatch();
// 開啟word文件
Dispatch doc = Dispatch.invoke(docs, "Open", Dispatch.Method, new Object[] { inPath, new Variant(false), new Variant(true) }, new int[1]).toDispatch();
// 作為html格式儲存到臨時檔案
Dispatch.invoke(doc, "SaveAs", Dispatch.Method, new Object[] { toPath, new Variant(8) }, new int[1]);
Variant f = new Variant(false);
Dispatch.call(doc, "Close", f);
flag = true;
return flag;
} catch (Exception e) {
e.printStackTrace();
return flag;
} finally {
axc.invoke("Quit", new Variant[] {});
}
}
public static void main(String[] args) {
wordToHtml("D://Codes//Word2HTML//test.doc", "D://Codes//Word2HTML//test.htm");
}