一条语句
 Class.forName("mypackage.myclass").newInstance();
执行时发生java.lang.NoClassDefFoundError异常
 改为
 new mypackage.myclass();
 Class.forName("mypackage.myclass").newInstance();
确能正常执行
  我要达到动态加载类的目的,苦想不出办法,求教,谢谢!

解决方案 »

  1.   

    虽然还没有找出解决的办法,不过我想应该是从 ClassLoader 开始研究。比较一下this.getClass().getClassLoader() 与
    new mypackage.myclass().class.getClassLoader()。之所以有这样怪异的情况,可能跟当前类所在的 jar 文件的位置,mypackage.myclass 类所在的 jar 文件所在的位置有关。不同的 jar 放在不同的位置,就可能采用不同的 ClassLoader ,因此不能使用 Class.forName 方法。
      

  2.   

    把mypackage.myclass重编译一次放到正确的目录Class.forName("mypackage.myclass").newInstance();
    执行时发生java.lang.NoClassDefFoundError异常
    表示没有找到mypackage.myclass.classnew mypackage.myclass(); 在IDE环境下没有CLASS文件也可以编译通过