从 jar.the java.lang.Noclassdeffound 运行项目时发生错误。
例如:1 类包含主要方法:
包 p;
导入 p1.MyClass1;
导入 p2.MyClass2;
公共类TestClass {
public int i;
public Object obj; //Line 5
public void aMethod(){
// 对象 obj=null; //第 7 行
if(i==0){
obj=new MyClass1();
System.out.println("if block: p1.MyClass1");
}else{
obj=new MyClass2();
System.out.println("else block: p2.MyClass2");
}
}
public static void main(String [] args){
TestClass t=new TestClass();
t.aMethod();
}
}
2:p1包的MyClass1:
包 p1;
公共类 MyClass1 {
public MyClass1() {}
}
3- p2 包的 MyClass2:
包p2;
公共类 MyClass2 {
public MyClass2() {}
}
在上面的示例中,3 个类是 TestClass、MyClass1 和 MyClass2。当我在构建之后运行上述项目(TestClass 是我项目的主类)时,使用 jar 并手动删除 p2 包它运行良好。但是在 TestClass 中的 chenge 对全局变量 public Object obj 进行注释(第 5 行)并在 TestClass 的方法 aMethod 中删除注释局部变量 Object obj(第 7 行)。然后我在手动删除 p2 包后从 jar 构建并运行项目,控制台在线程“main”java.lang.NoClassDefFoundError: p2/MyClass2 中显示异常
at run time no need of p2 package but making the variable "obj" in class TestClass
从全局到本地(在方法 aMethod() 中)发生异常。 请对我的问题进行排序,为什么会出现此错误。