Prohibited package name: java异常原因

    xiaoxiao2021-03-25  142

    Prohibited package name: java异常原因

    今天用eclipse创建了一个java project,然后建了一个名为“java”的文件夹,当启动里面的主函数时,出现如下异常:

    Exception in thread "main" java.lang.SecurityException: Prohibited package name: java at java.lang.ClassLoader.preDefineClass(Unknown Source) at java.lang.ClassLoader.defineClass(Unknown Source) at java.security.SecureClassLoader.defineClass(Unknown Source) at java.net.URLClassLoader.defineClass(Unknown Source) at java.net.URLClassLoader.access$100(Unknown Source) 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) at sun.launcher.LauncherHelper.checkAndLoadMain(Unknown Source)

    查了一下,发现是java.lang.ClassLoader.preDefineClass这个类对运行的类名做了检查,如果以“java”作为1级包名的话,则会抛出异常:Prohibited package name: java,所以修改包名即可解决异常。


    具体原因参考: http://idealab.iteye.com/blog/452404,如下: 这条安全异常是由Java类加载的“双亲委派模型”所导致的。在双亲委派模型中,由父加载类加载的类,下层加载器是不能加载的。本例中最高层加载器BootstrapClassLoader加载了classpath路径下所定义的java.包内的类,而java.research包就不能由BootstrapClassLoader的下层加载器AppClassLoader加载了。这也是java安全机制中对于恶意代码所采取的防护措施。*

    转载请注明原文地址: https://ju.6miu.com/read-5333.html

    最新回复(0)