库存在,与Java的架构相同,但我仍然得到Java.lang.UnsatifiedLink错误:无法加载库

库存在,与Java的架构相同,但我仍然得到Java.lang.UnsatifiedLink错误:无法加载库,java,jna,Java,Jna,我正在运行64个windows。我的java版本说: java version "1.8.0_60" Java(TM) SE Runtime Environment (build 1.8.0_60-b27) Java HotSpot(TM) 64-Bit Server VM (build 25.60-b23, mixed mode) 我的项目是在ApacheTomcat服务器上运行的GWT Spring项目,上面的java属性应用于服务器(据说这是为了澄清服务器没有意外地运行不同的java版本

我正在运行64个windows。我的java版本说:

java version "1.8.0_60"
Java(TM) SE Runtime Environment (build 1.8.0_60-b27)
Java HotSpot(TM) 64-Bit Server VM (build 25.60-b23, mixed mode)
我的项目是在ApacheTomcat服务器上运行的GWT Spring项目,上面的java属性应用于服务器(据说这是为了澄清服务器没有意外地运行不同的java版本)

在Java代码中,我使用
System.getProperty(“sun.arch.data.model”)
来确定Java版本,并根据结果加载64位或32位dll。在特定情况下,我现在运行64位,因此需要64位dll文件。我将文件放置在以下位置:

D:\programs\apache-tomcat-7.0.64-windows-x64\webapps\war\WEB-INF\lib\MY_LIBRARYx64.dll
在java代码中,我使用以下函数加载库:

private void setLibraryPath_private(String libraryPath) {

    // Some magic which doesn't work anyway
    File path = new File(configService.getProjectPrefix() + libraryPath);


    try {
        // Get valid canonical path (special case of absolute path)
        path = new File(path.getCanonicalPath());
        // Check for readability of that location
        if(!path.canRead())
            throw new IOException("Cannot read from this file.");
    }
    catch(IOException e) {
        logger.error("Invalid path to R220 library: "+path.getAbsolutePath(), e);
    }

    // Remember path as string
    this.libraryPath = path.getAbsolutePath();
    try {
        // Load it
        library =
        (R220) Native.loadLibrary(path.getCanonicalPath(), R220.class);
    }
    catch(Throwable e) {
        // TODO: After loading problem is solved, probably replace throw with the logging
        //logger.error("Failed to load R220 library: "+path.getAbsolutePath(), e);          
        throw new IllegalArgumentException("Failed to load R220 library: "+path.getAbsolutePath(), e);
    }
    // I don't know what this is
    library.initLogger(configService.getLog4cplusConfigFilePath()); 
}
但在我的日志中,我仍然得到错误:

[INFO ] 2015-09-21 15:52:26,038 cz.techsys.web.server.R220LibService - Running 64bit version of the native libary.
[ERROR] 2015-09-21 15:52:26,113 cz.techsys.web.server.R220LibService - Failed to load R220 library: D:\programs\apache-tomcat-7.0.64-windows-x64\webapps\war\WEB-INF\lib\MY_LIBRARYx64.dll
java.lang.UnsatisfiedLinkError: Unable to load library 'D:\programs\apache-tomcat-7.0.64-windows-x64\webapps\war\WEB-INF\lib\MY_LIBRARYx64.dll': The specified module could not be found.

    at com.sun.jna.NativeLibrary.loadLibrary(NativeLibrary.java:163)
    at com.sun.jna.NativeLibrary.getInstance(NativeLibrary.java:236)
    at com.sun.jna.Library$Handler.<init>(Library.java:140)
    at com.sun.jna.Native.loadLibrary(Native.java:379)
    at com.sun.jna.Native.loadLibrary(Native.java:364)
不用说,这没有任何影响,除了错误消息现在稍微短了一点:

[WARN ] 2015-09-21 16:33:56,819 cz.techsys.web.server.R220LibService - 
       Lib path: D:\programs\apache-tomcat-7.0.64-windows-x64\webapps\war\WEB-INF\lib
       Lib name:WebSightR220libx64
[ERROR] 2015-09-21 16:33:56,882 cz.techsys.web.server.R220LibService - Failed to load R220 library: D:\programs\apache-tomcat-7.0.64-windows-x64\webapps\war\WEB-INF\lib\WebSightR220libx64.dll
java.lang.UnsatisfiedLinkError: Unable to load library 'WebSightR220libx64': The specified module could not be found.

    at com.sun.jna.NativeLibrary.loadLibrary(NativeLibrary.java:163)
    at com.sun.jna.NativeLibrary.getInstance(NativeLibrary.java:236)

您已将
.dll
添加到库名称?库不在可访问位置,无法从WEB-INF/lib访问本地库;它们必须由本机链接器读取。LD_LIBRARY_路径或(在Windows上)路径。我不明白。为什么我不能在任何绝对路径上加载库?无论如何,我试过了——我使用了
System.setProperty(“java.library.path”,dir)和我传递的库名没有扩展名。它仍然不起作用。
[WARN ] 2015-09-21 16:33:56,819 cz.techsys.web.server.R220LibService - 
       Lib path: D:\programs\apache-tomcat-7.0.64-windows-x64\webapps\war\WEB-INF\lib
       Lib name:WebSightR220libx64
[ERROR] 2015-09-21 16:33:56,882 cz.techsys.web.server.R220LibService - Failed to load R220 library: D:\programs\apache-tomcat-7.0.64-windows-x64\webapps\war\WEB-INF\lib\WebSightR220libx64.dll
java.lang.UnsatisfiedLinkError: Unable to load library 'WebSightR220libx64': The specified module could not be found.

    at com.sun.jna.NativeLibrary.loadLibrary(NativeLibrary.java:163)
    at com.sun.jna.NativeLibrary.getInstance(NativeLibrary.java:236)