在另一台计算机上运行Jar文件,获取NoClassDefFound错误

时间:2018-06-15 20:51:58

标签: java netbeans noclassdeffounderror

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

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

修改 我认为问题是我的库在文件夹中,而带有源代码的.jar文件是独立的(都在我的dist文件夹中)。那么如何完全运行这些文件才能在外国计算机上运行?

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

1 个答案:

答案 0 :(得分:0)

很可能它与类加载不确定性顺序有关,并且与应用程序依赖项中多个jar文件定义的同一个包之间存在冲突

为了识别加载类的实际来源,您可以运行以下代码段

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);
    }
}