admin管理员组

文章数量:1558087


java.lang.SecurityException: Prohibited package name: java.utils

	at java.lang.ClassLoader.preDefineClass(ClassLoader.java:659)
	at java.lang.ClassLoader.defineClass(ClassLoader.java:758)
	at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
	at java.URLClassLoader.defineClass(URLClassLoader.java:467)
	at java.URLClassLoader.access$100(URLClassLoader.java:73)
	at java.URLClassLoader$1.run(URLClassLoader.java:368)
	at java.URLClassLoader$1.run(URLClassLoader.java:362)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.URLClassLoader.findClass(URLClassLoader.java:361)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:424)

使用idea创建了一个新的工程,然后建了一个名为“java”的文件夹

 发现java下多了 java.的形式 原因找到啦!!!

 通过了解

可以看出preDefineClass方法首先对类名进行了检查,发现以java作为一级包名,则抛出安全异常:禁止使用的包名!

这条安全异常是由Java类加载的“双亲委派模型”(详见这里)所导致的。在双亲委派模型中,由父加载类加载的类,下层加载器是不能加载的。本例中最高层加载器BootstrapClassLoader加载了classpath路径下所定义的java.*包内的类,而java.research包就不能由BootstrapClassLoader的下层加载器AppClassLoader加载了。这也是java安全机制中对于恶意代码所采取的防护措施

 

本文标签: SecurityExceptionlangJavautilsPackage