解决jacob-1.18-x86.dll中的问题,它在运行时无法访问我可以成功编译程序。
SEVERE: Servlet.service() for servlet dispatcher threw exception
java.lang.UnsatisfiedLinkError: no jacob-1.14.3-x64 in java.library.path
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1867)
at java.lang.Runtime.loadLibrary0(Runtime.java:870)
at java.lang.System.loadLibrary(System.java:1122)
at com.jacob.com.LibraryLoader.loadJacobLibrary(LibraryLoader.java:184)
at com.jacob.com.JacobObject.<clinit>(JacobObject.java:108)
maven依赖性是:
<dependency>
<groupId>net.sf.jacob-project</groupId>
<artifactId>jacob</artifactId>
<version>${jacob.version}</version>
</dependency>
<dependency>
<groupId>net.sf.jacob-project</groupId>
<artifactId>jacob</artifactId>
<version>1.14.3</version>
<classifier>x64</classifier>
<type>dll</type>
</dependency>
您是否将jacob .dll文件放入运行时库路径?例如。在文件夹中:
/java/jdk/jre/bin
和
/java/jdk/jre/lib/ext/jacob-1.18
现在,当我添加以下文件时已解决:
jacob-1.14.3-x64.ddl和jacob-1.14.3-x84.dll
内部文件夹:
/java/jdk/jre/bin和/java/jdk/jre/lib/ext
我通过在System.getProperty("java.library.path")
的第一个文件夹中添加jacob-1.19-x64.dll
文件来解决问题。
仅system.out
属性并在文件夹中复制.dll
文件。
并非总是可以将DLL添加到Java.library.path的文件夹中。希望这种解决方案对他人有所帮助。
在我查看加载DLL的源代码之前,对此进行了一些努力。在调用雅各布库中的任何方法之前添加以下代码。这将指示雅各布从指定的路径加载DLL,而不是在Java.library.path。
System.setProperty("jacob.dll.path", "/path/to/your/jacob/jacob-1.18-x86.dll");
适用于1.20版。但也应该适用于较旧版本。