Java Class.forName无法找到类

时间:2019-03-06 08:50:23

标签: java classloader java-security

我的应用程序中有一个课程:

package com.myapp;

public class Foo {}

当我尝试像这样加载它时:

package com.myapp;

public class Main {

    public static void main(String[] args) {
        Class.forName("com.myapp.Foo");
    }
}

有效。 但是,如果我尝试使用AccessController中的类加载器,则会抛出ClassNotFoundException

package com.myapp;

public class Main {
     public static void main(String[] args) {
         final ClassLoader classLoader = AccessController.doPrivileged(new PrivilegedAction<ClassLoader>() {
             public ClassLoader run() {
                  return Thread.currentThread().getContextClassLoader();
             }
         });
         Class.forName("com.myapp.Foo", true, classloader);
    }
}

完整的堆栈跟踪如下:

java.lang.ClassNotFoundException: com.myapp.Foo
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:348)
    at com.myapp.Main(Main.java:10)

我该如何解决?

0 个答案:

没有答案