【问题标题】:Running Jar file on another computer, getting NoClassDefFound error [duplicate]在另一台计算机上运行 Jar 文件,出现 NoClassDefFound 错误 [重复]
【发布时间】:2018-06-15 20:51:58
【问题描述】:

所以这是我第一次尝试在另一台计算机上运行我的 Jar 文件。两台计算机都是 Windows 10。我从研究中确定是“类路径”问题,这在外国计算机上运行时是有意义的:As seen here 我不确定的是解决这个问题的解决方案。有没有我可以在 Jar 中修复它的解决方案,这样用户所要做的就是在 CMD 中运行这个 jar 程序而无需额外的命令? (只有用户应该输入的命令是 java -jar)如果有解决方案,细节将非常有帮助。

如果没有,用户需要输入什么命令?而且我已经知道 Class not Found 错误是 NoClassDefFound 的子错误,我知道问题、它是如何工作的以及诊断,但我正在尝试找到解决方案。

编辑 我认为问题是我的库在文件夹中,而带有源代码的 .jar 文件是分开的(都在我的 dist 文件夹中)。那么如何运行这些文件才能在外国计算机上正常运行呢?

编辑 2 解决了这个问题。从逻辑上讲,我正在运行一个没有库文件夹的 jar 文件来引用导入。当我压缩 dist 并从外国计算机上运行它时,它工作得很好。

【问题讨论】:

  • 在我看来,您的库在另一台计算机上不可用。如果您没有将它们包含在您的 JAR 文件中,您需要将它们单独复制到另一台计算机并将它们包含在您的类路径中。
  • 将异常的堆栈跟踪作为文本包含在您的问题中,而不是作为图像。

标签: java netbeans noclassdeffounderror


【解决方案1】:

这很可能与类加载顺序不确定,以及应用依赖项中多个 jar 文件定义的同一包之间的冲突有关

为了识别加载类的实际来源,您可以运行以下 sn-p

package com.asd;

import java.net.URL;

public class Main {

    public static void main(String[] args) {
        Class aClass = YouClas.class;
        String classResource = Timestamp.class.getName().replace(".", "/")+".class";
        System.out.println(classResource);
        URL url  =aClass.getClassLoader().getResource(classResource);
        System.out.println(url);
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-21
    • 2011-11-19
    相关资源
    最近更新 更多