无法在另一台PC上运行JAR文件。环境变量可能存在问题?

时间:2010-09-02 16:55:47

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

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

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

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

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

任何帮助都将不胜感激。

3 个答案:

答案 0 :(得分:4)

它必须是CLASSPATH问题。

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

答案 1 :(得分:3)

这可能是其他人所说的类路径问题。

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

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

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

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

答案 2 :(得分:0)

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

我很确定它在Eclipse之外的第一台PC上也不起作用。