【发布时间】:2016-04-14 22:44:59
【问题描述】:
我的问题是,当 B 类尝试使用 A.check() 时,我的执行由于 java.lang.NoClassDefFoundError 而停止。
这是我的班级配置。注意:这些类在同一个包中,我已经检查了 A.class 文件是否放置在它应该放在的位置。
public class A{
// vars
// declare some public method
public synchronized static boolean check(){
//do stuff, log some info and return boolean
}
}
public class B implements Runnable{
public void run() {
A.check();
}
}
这是我的堆栈跟踪:
java.lang.NoClassDefFoundError: org/mypackage/A 在 org/mypackage.B.run() 在 java.lang.Thread.run(Thread.java:745) 引起:java.lang.ClassNotFoundException: org/mypackage.B 在 org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy.loadClass(SelfFirstStrategy.java:50)
该项目非常大,并且在此调用之前多次使用 A 类没有任何问题,所以我认为这与类路径无关。请注意,这是软件最后一次调用的一部分,应该关闭所有内容。
此外,我有两个 maven 目标:第一个执行有问题的代码没有任何问题,而第二个每次都会出现此错误。
【问题讨论】:
-
你能发布你提到的两个不同的 maven 目标吗?
-
什么意思?它们是我作为 maven 插件插入的两个自定义目标。你需要那些插件的代码吗?
-
确保你的类加载器是一样的
-
您使用的是 Plexus 编译器插件吗?配置不一样吗?
标签: java multithreading maven