我有一个由 Java 应用程序通过 JNA 调用的 dll(我们将其命名为 Sample.dll)。所述dll在名为“Data”的文件夹中找到一个文件。我认为上述 dll 已成功加载,因为没有返回错误消息。下面是加载dll的代码:
sampleLibrary = (SampleLibrary)Native.loadLibrary("Sample", SampleLibrary.class);
执行该代码后,将调用本机方法来打开会话。此方法接受文件夹的路径作为参数。
sampleLibrary.openSession(path);
JNA 似乎无法找到该文件,因为返回的错误表明该文件不存在。我尝试设置并打印“user.dir”和“java.library.path”以查看传递的路径是否正确。
System.setProperty("java.library.path", "C:/Sample");
System.out.println("user.dir property: " + System.getProperty("user.dir"));
System.out.println("java.library.path property: " + System.getProperty("java.library.path"));
这些返回 jar、dll 和 Data 文件夹所在的工作目录。
文件结构:
C:\Sample
\-- SampleJna.jar
\-- Sample.dll
\-- Data
\----- some files