import sun.net.spi.nameservice.dns.CA;public class Main { public static void main(String[] args) {
System.out.println(Main.class.getClassLoader().getClass().getName());
CA a = new CA();
System.out.println(a.getClass().getClassLoader().getClass().getName());
}
}
}我把CA类放在了sun.net.spi.nameservice.dns(就是Java\jre7\lib\ext下的dnsns.jar)下,我的意思是AppClassLoader找不到CA,就委托extClassloader,所以应该能加载,但是却报错。
另:如果extClassloader加载成功的话,System.out.println(a.getClass().getClassLoader().getClass().getName())是输出extClassloader还是AppClassLoader,因为extClassloader是定义加载,AppClassLoader是启动类CA的加载器。

解决方案 »

  1.   


    sun.misc.Launcher$AppClassLoader
    Exception in thread "main" java.lang.NoClassDefFoundError: CA
    at Main.main(Main.java:7)
    Caused by: java.lang.ClassNotFoundException: CA
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    ... 1 more
      

  2.   

    LZ这个需要什么额外的JAR包么?
      

  3.   

    “我把CA类放在了sun.net.spi.nameservice.dns(就是Java\jre7\lib\ext下的dnsns.jar)下”
    把CA类放在Java\jre7\lib\ext\classes下(如果没有classes这个目录,新建个),别的就不多说了,运行下什么你都知道了。
      

  4.   

    jdk1.7.0\jre\lib\ext   相对位置是放在这里吗
      

  5.   

    我把CA.class直接加到ext下的dnsns.jar里,包名 sun.net.spi.nameservice.dns。
      

  6.   

    没见过这么放的= =你自己直接打包个jar的话应该没问题的