3

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

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

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

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

任何帮助,将不胜感激。

4

3 回答 3

4

一定是 CLASSPATH 问题。

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

于 2010-09-02T16:58:01.470 回答
3

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

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

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

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

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

于 2010-09-02T17:08:25.450 回答
0

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

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

于 2010-09-02T17:05:53.553 回答