【问题标题】:Java: runnable JAR file, could not find main class on different computersJava:可运行的 JAR 文件,在不同的计算机上找不到主类
【发布时间】:2012-10-18 22:02:19
【问题描述】:

我创建了一个小 Swing 应用程序。现在我把它给一个朋友测试,在他的电脑上它可以工作。 当他将 JAR 文件放在 U 盘上并尝试在另一台计算机上运行它时,会出现错误消息“找不到主类逻辑。启动。程序将退出。”。

由于他不太喜欢检查他拥有哪个版本的计算机,我很确定问题是其他计算机上的 java 版本?根据 Eclipse,我的构建路径是 JavaSE-1.7,但我似乎无法“调整”所需的最小值,例如我可以在 Android 中做到这一点。有没有办法做到这一点?例如,我可以将其作为 JRE5+ 应用程序吗?

编辑:

manifest.mf文件是这样的

Manifest-Version: 1.0
Class-Path: .
Main-Class: logic.Start
(NEWLINE)
(NEWLINE)

我读到必须只有一个(NEWLINE)。此外,JAR 文件包含文件夹

gui / guiDialogs / guiElements / guiHelp / gx / logic (contains Start.class) / META-INF / sounds

并且没有其他外部 JAR。

【问题讨论】:

  • 在 Eclipse 上创建新项目时,您可以在“使用执行环境 JRE:”下指定要使用的 JRE 版本
  • @M.M.之后可以编辑吗?
  • 是的,右键单击一个项目打开它的属性。在弹出窗口中选择 Java Compiler 树节点。在这里您可以编辑每个项目的 java 版本,它包含一个用于编辑整个 Eclipse 工作区设置的链接。

标签: java jar


【解决方案1】:

如果存在 Java 版本问题,则错误消息会有所不同。

您的 jar 文件不完整(或依赖于尚未与主 jar 文件一起复制的其他 jar)。 MANIFEST.MF 指向主类logic.Start,它在预期位置不可用。

调查 MANIFEST.MF 文件的 Class-Path 行。您可能碰巧引用了绝对路径名或类似名称。

【讨论】:

  • 我很可能指的是绝对路径。但是让我提出一个愚蠢的问题:我如何阅读 manifest.mf 的内容? (它是从 eclipse 导出创建的可运行 JAR 文件)
  • 没关系我找到了,现在内容是 Manifest-Version: 1.0 Class-Path: 。 Main-Class: logic.Start Class-Path只有“.”是什么意思?
  • 那个“。” 类路径,这意味着在 jar 中找不到的所有类必须存在于 jar 文件旁边的文件系统中。这很可能是您的问题。
  • “意味着所有未在 jar 中找到的类,必须存在于 jar 文件旁边的文件系统中”到底是什么意思?请参阅我在原始问题中的编辑,我在 JAR 文件中发布了清单和结构。
  • 我建议你现在花点时间学习。 Java 教程是一个很好的资源:@​​987654321@
【解决方案2】:

事实上,问题在于不同计算机上的 JRE 版本。在eclipse中,标准JDK设置为7,并且似乎不可能在已经创建的项目中更改它,我创建了一个具有较低minimu-JRE级别的新项目,将整个代码复制粘贴到该项目中,现在它有效。

【讨论】:

    【解决方案3】:

    您可以避免创建新项目并复制粘贴代码的步骤。只需右键单击类似于一堆书的图标旁边的“JRE System Library”行,然后单击“属性”。将执行环境更改为您选择的 JRE 版本。

    【讨论】:

      猜你喜欢
      • 2012-01-16
      • 2016-05-21
      • 2013-06-30
      • 2012-01-27
      • 1970-01-01
      • 2015-08-18
      • 2013-04-12
      • 2020-02-19
      • 2017-12-10
      相关资源
      最近更新 更多