有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java导出一个可运行的jar,打开它会返回一个不满意的链接错误

我目前在Eclipse中编写了一个简单的GUI,可以按预期运行。我希望导出它,这样我就可以与我的朋友共享它(他不需要安装eclipse和java库)。我尝试了Eclipse提供的所有3种库处理方法,但都不起作用。我在网上读了一点,看到了一些关于清单文件的信息,但不太确定如何处理它。这会有帮助吗This is what happens when I run it in the cmd

这就是我放置文件夹的地方。dll文件。 enter image description hereenter image description here 这就是结果。我做错什么了吗? enter image description here


共 (1) 个答案

  1. # 1 楼答案

    正如第一个屏幕截图中的错误消息所示,这里缺少的是本机库——根据特定于操作系统的本机代码编写和编译的软件库。您需要做的是提供特定于运行软件的操作系统的库,例如用于32位或64位Windows的DLL。清单不提供包含这些库的功能

    当程序在Windows上运行时,Java将在以下位置查找本机库:

    • 当前目录
    • PATH环境变量中的目录
    • java中的目录。图书馆路径(如果已指定)

    将所有文件放在一个目录中可能是最简单的方法。如果您这样做,您应该能够以与现在相同的方式运行程序

    如果要将本机库文件放在与运行程序的目录不同的目录中,而不是放在路径上,则只需使用java.library.path选项。只有在这种情况下,您才需要添加java.library.path,例如,在java之后添加-Djava.library.path=c:\path\to\your\lib。还要注意的是,您可以使用相对路径,即在执行命令时相对于您所在目录的路径

    我还从您稍后的错误消息中看到,您有另一个依赖项,但依赖于java库LeapJava.jar。因为只有在只有一个jar的情况下运行带有-jar的jar才有效,但是因为您有多个jar(您自己的程序加上依赖项),所以您需要使用-classpath(简称-cp)参数并添加主类。classpath参数是以分号分隔的类路径位置列表,而主类是包含public static void main方法的类,例如your.package.name.YourMainClass。假设你的用户界面。jar仍在C:\Users\Ian\Desktop\Leap Data UI中,您应该能够导航到该目录并使用以下命令执行:

    java -cp UI.jar;UI_lib\LeapJava.jar -Djava.library.path="UI_lib\x64" your.package.name.YourMainClass