java - 可执行 jar 文件不会通过双击加载 dll 但它会运行

标签 java dll java-native-interface netbeans-7 executable-jar

我构建了一个依赖于一些 jar 库和 dll 的可执行 jar 文件 (test.jar)。

一开始它显示了一个 JFileChooser 对话框,用户必须选择一个文件。之后它调用一个方法并使用 jar/dll 库读取选定的文件。在进程结束时它显示输出对话框。(使用 JOptionPane) 最后创建一个对话框,表示完成!

在netbeans中运行成功,使用JNI没有任何问题。我也可以创建一个批处理文件(test.bat)并运行 jar 文件。没关系。

但是当我双击可执行 jar 文件时,会显示 fileChooser 并且在选择文件后没有任何反应。 通过这种方式,它显示了最终对话! 我把我的文件这样放:

新建文件夹

 test.jar
 test.bat
 lib0.dll
 lib1.dll
 lib

   lib2.jar
   lib3.jar

问题是什么?请帮帮我。我的问题与加载 dll 文件及其路径有关吗? 我的问题似乎与此相符: https://stackoverflow.com/questions/17811376/dll-files-not-loaded-if-executing-jar-file

最佳答案

您正在运行的 java 命令似乎是 x86(32 位)版本,而您在 Windows 中与 jarfile 关联的 javaw 是 x64。这是不匹配,也是其中一个会加载 dll 而另一个不会加载的原因。

如果它在控制台中工作但双击时不工作,则该库似乎是 32 位的。这是正确的吗?

如果是这样,并且您想将 double 上的 Windows 关联更改为 x86 版本,则需要按照以下说明进行操作:

http://windowstipoftheday.blogspot.dk/2005/10/setting-jar-file-association.html

注意:说明链接到 javaw 的 x64 版本。您需要在“C:\program files (x86)\java”中找到那个。

关于java - 可执行 jar 文件不会通过双击加载 dll 但它会运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18165750/

相关文章:

java - Web 应用程序中 hsqldb 文件的相对路径不起作用?

java - 为什么在尝试运行 Swing 桌面应用程序时会收到 HelpSetException - NoClassDefFoundError?

iis - Asp.net 将 DLL 重新安装到 GAC 中

java - jvm 在使用 jni 从 java 类读取 arraylist 时崩溃

java - 如何在 JNI 中将 Java 字节数组的内容转换为 C 字符串?

java - 在 JSP 中向 Struts2 输入日期

Java KeyListener 不起作用,我认为它与 addKeyListener() 有关;方法我不知道为什么

c# - 在 C++ 中不能将数组作为返回类型吗?备择方案?

c++ - 在 AIR Native Extension 中包含库会导致错误,所有方法都为 "The extension context does not have a method with the name..."

java - 在 ndk 中找不到原生的实现