为什么我的jar文件在我的计算机上完美运行,但在另一台计算机上却不能

时间:2012-11-15 14:07:12

标签: java netbeans jar zip executable-jar

最近我在NetBeans中开发了一个相当简单的GUI应用程序,在我进一步开发之前,我决定在另一台计算机上测试该应用程序,因为我不太了解分发应用程序并希望确保我是做得对。

在NetBeans中,它运行正常,当我单击Run-> Clean and Build Project时,它会在我项目的dist文件夹中按预期创建.jar文件。当我从dist文件夹运行计算机上的.jar文件时,它按预期运行。

然后我尝试在另一台计算机上(从闪存驱动器)以不同的方式运行它,但没有一个工作:

  1. 仅将jar文件复制到我的闪存驱动器,尝试运行它,收到错误消息“无法找到主类:MyApplicationPackage.MyApplication。程序将退出。”

  2. 在NetBeans中单击了文件 - >导出项目 - >到Zip ...并将压缩文件夹复制到我的闪存驱动器。当我在另一台计算机上解压缩文件时,没有dist文件夹(我真的没想到会有一个文件夹)。

  3. 将整个项目文件夹复制到我的闪存驱动器上,并尝试在另一台计算机上运行jar文件,生成相同的错误消息。

  4. 如何让它在其他计算机上运行?是否有更简单的方式来分发应用程序?我不希望普通人知道如何解压缩文件,找到dist文件夹,然后运行jar文件。我能以某种方式将所有内容组合成一个可运行的文件吗?

    编辑:我自己找到了解决方案:另一台计算机上的java版本不是当前版本。为了使应用程序运行,我打开了项目的属性窗口,在“Sources”选项卡下,底部附近有一个选项,显示“Source / Binary Format”。将其更改为早期版本的Java,使其在另一台计算机上运行。另一个(也是更好的)选择是在另一台计算机上升级到当前版本的Java。

1 个答案:

答案 0 :(得分:1)

你必须检查是否有一个MANIFEST文件,指出主类的位置。

如果你正在使用maven,你可以使用程序集插件,它将使用你指定的参数生成你的MANIFEST文件。

<plugin>
        <artifactId>maven-assembly-plugin</artifactId>
        <configuration>
                <descriptorRefs>
                        <descriptorRef>jar-with-dependencies</descriptorRef>
                </descriptorRefs>
                <archive>
                        <manifest>
                                <addClasspath>true</addClasspath>
                                <mainClass>com.blabla.Main</mainClass>
                        </manifest>
                        <manifestEntries>
                                <SplashScreen-Image>splashscreen.png</SplashScreen-Image>
                        </manifestEntries>
                </archive>
        </configuration>

</plugin>

编辑: