从jar运行时发生java.lang.Noclassdeffounderror

时间:2012-07-23 06:17:32

标签: noclassdeffounderror

从jar运行项目时,会发生java.lang.Noclassdeffounderror。

例如: 1级包含主要方法:

包p;

导入p1.MyClass1;

导入p2.MyClass2;

公共类TestClass {

public int i;
public Object obj;  //Line 5

public void aMethod(){

// Object 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中对于全局变量public Object obj(第5行)进行注释并在TestClass的方法aMethod(第7行)中删除注释局部变量Object obj之后。       然后我在手动删除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()中)发生异常。       请解答我的问题,为什么会出错。

0 个答案:

没有答案
相关问题