【问题标题】:Unable to run JAR file on another PC. Possible issue with Environment Variables?无法在另一台 PC 上运行 JAR 文件。环境变量可能存在问题?
【发布时间】:2011-04-07 11:00:11
【问题描述】:

我已经构建了一个 JAR 文件,它在我安装了 Eclipse 的 PC (XP) 上运行良好。它也可以在另一台也有 Eclipse 的 PC 上运行。

我尝试在另一台没有 Eclipse 的 PC(XP) 上运行它。虽然它包含 JDK 和多个 JRE。 JAR 文件不会通过单击或从命令提示符执行。

我不完全确定,但我最好的猜测是环境变量设置不正确。这是我从命令提示符收到的错误:

Exception in thread "main" java.lang.NoClassDefFoundError: ...

任何帮助将不胜感激。

【问题讨论】:

  • 提供完整的堆栈跟踪可能会有所帮助。是找不到你的主类还是其他类?
  • 你在这个 .jar 的 META-INF/MANIFEST.MF 中有什么?
  • 你能添加整个异常,包括类名和堆栈跟踪吗?

标签: java classpath environment-variables executable-jar jdk1.6


【解决方案1】:

正如其他人所说,这可能是类路径问题。

需要注意的一点是您的 jar 是如何构建的。对话框中有许多用于导出可运行 jar 的选项;

  • 将类提取到 jar 中
  • 将依赖项压缩到 jar 中 - 在 jar 中创建 jar-in-jar-loader.jar。
  • 将罐子放在罐子旁边的子目录中。

取决于您为此选择的内容,取决于 jar 的行为方式。如果提取了类,则不在 JDK 中的依赖类应该在类路径中。我会推荐这种做法,因为它更简单。

现在,问题是 - 您是否在类路径上使用了依赖项,而不是在 Eclipse 项目的构建依赖项中?如果是这样,它不会被打包/压缩到/放在jar旁边,因为eclipse不知道它(但是java仍然会在你的系统上找到它,因为它在类路径上)。此外,如果您已保存 ANT 脚本并在 eclipse 中更新了构建路径,则 eclipse 不会更新该 ANT 脚本 - 仅生成一次。

【讨论】:

    【解决方案2】:

    点击jar文件时不考虑环境变量(相当于运行javaw -jar your.jar)。

    我很确定它在 Eclipse 之外的第一台 PC 上也无法运行。

    【讨论】:

      【解决方案3】:

      一定是 CLASSPATH 问题。

      堆栈跟踪还应该说明它未能找到哪个类。一旦你有了那个,然后找到哪个 jar 有那个类。然后将该 jar 文件添加到您的类路径或将其添加到类路径 env 变量中。

      【讨论】:

      • 太棒了!有效。我不知道您必须将外部 JAR 显式添加到类路径中!谢谢。
      • 不客气。请接受一个答案作为正确答案。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-18
      • 2023-02-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多