【问题标题】:runnable .jar file runs on my windows device but won't on others(windows too)可运行的 .jar 文件在我的 windows 设备上运行,但不会在其他设备上运行(windows 也是)
【发布时间】:2018-07-30 17:34:37
【问题描述】:

所以我编写了一个小程序供妈妈使用。我将它导出到runnable .jar,这对我来说是第一次,所以我显然把它搞砸了。

实际上,该文件在我的计算机上运行良好。但是当我在她身上尝试时,双击文件只会给我一个错误:“找不到主类:controller.Main”。而且程序不会启动

我使用 eclipse GUI 导出它(右键单击 projet -> 导出 -> 可运行的 JAR),它给出了一个在我的计算机上运行良好的文件。 如果它有任何帮助,我的程序使用了一堆资源文件,但我将它们包含在我给我母亲的文件夹中的正确位置,所以它不应该是问题(此外,它会在尝试时出现故障根据一些个人测试,使用图像,但不会阻止它启动)

它可以在我的设备上运行但不能在另一个设备上运行的原因(两个 Windows)可能是什么原因?以及如何解决这个问题?

N.B:我在导出之前在我的项目中包含了一个 MANIFEST.MS 文件,但是 Eclipse 在导出时没有明确提及它,所以我认为它没有考虑到它。此外,我将我的主要课程称为Main(而不是controller.Main,就像我在母亲的电脑上收到的错误消息一样)。这可能是我的错误,但我认为这表明 Eclipse 不太关心我的清单,并且有点自己的。

提前致谢! 如果您想要下载文件夹的链接,自己检查一下,请告诉我! (虽然有点重,图挺多的)

编辑:我在不同的计算机上收到不同的错误消息。一台电脑会给我第一条信息: first computer error

另一台计算机给了我这 2 条错误消息(一个接一个)

2nd computer error (1/2)

2nd computer error 2/2

当然,它在我的电脑上仍然可以正常运行,只需双击!

我的 .jar 文件(作为存档打开)包含:

  • 我的包对应的3个文件夹:控制器、模型、视图

  • 1 文件夹 META-INF 包含 Eclipse 生成的 MANIFEST.MF,如下所示:

    Manifest-Version: 1.0 Main-Class: controller.Main Class-Path: .

【问题讨论】:

  • 当你用eclipse创建一个可运行的jar文件时,eclipse会自动生成MANIFEST。如果您想在“Main-class: Main”中包含您自己的清单,那么您应该在 eclipse 上执行 projet -> export -> JAR 并选择您的 MANIFEST 文件。您是否尝试过使用 RAR 或 ZIP 打开两个 jar 文件(一个在您的计算机上,一个在您母亲的)(可能内容不同)?
  • 感谢清单上的这个精确度,但实际上我相信 Eclipse 比我的更重要:D 我没有尝试打开 jar,因为它们确实是相同的文件(我只是从我的计算机上的 USB 密钥,并给了它)。你认为这有什么不同吗?
  • 你能写/打印完整的堆栈跟踪/错误吗?
  • 当然。检查编辑后的消息以获取我在不同计算机上遇到的各种错误的屏幕截图
  • 你提到了一些资源文件。这些资源是DLL文件吗?您是否使用本机函数调用(取决于操作系统)?

标签: java jar export runnable


【解决方案1】:

好的!我能弄明白。所以实际上有两个问题相互叠加:

  • 首先,我认为Martin 的建议是正确的。在对新的错误消息进行研究之后,很明显本地调用可能与问题有关,尽管我不知道我使用的是什么本地库。我可以通过选择另一个选项来处理 eclipse 导出功能中的库来解决问题的第一部分:我选择了选项“将所需的库打包到生成的 JAR”(而不是之前的“将所需的库提取到生成的 JAR”),它让错误消息消失!
  • 即使消息消失,应用程序仍然无法启动。但这一次问题更加明显;我只是用 java 9 JDK 为 eclipse 编译并导出了文件,同时尝试在 java 8 软件上运行它(我认为 java 9 直到今天才在其开发版本中可用)。于是我只好下载了java 8 JDK,配置了构建路径使用后者,终于在另一台电脑上运行了。

感谢 Martin 帮助我解决了正确的问题!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-07-12
    • 1970-01-01
    • 2017-08-09
    • 2014-12-24
    • 1970-01-01
    • 2021-04-07
    • 2020-06-08
    相关资源
    最近更新 更多