我发现java。*和javax。*是非法(保留)包名的信息(在“OCA Java SE 7程序员I学习指南”一书中)。当我尝试创建包“java”并从中运行类时,我收到:
Exception in thread "main" java.lang.SecurityException: Prohibited package name: java
但是当我从“javax”包运行类时,我没有收到任何错误。在docs.oracle.com上我只找到了信息:
Packages in the Java language itself begin with java. or javax.
所以...它是“javax”非法名称吗?也许它仅在Java EE或旧版本的Java上是非法的?(我在JDK 1.6.0_43和1.7.0_25上尝试过它)
答案 0 :(得分:3)
javax.
用于扩展(可能在JRE中),因此确保可以在这些包中定义类。 IIRC,可以通过将javax.
添加到package.definition
安全属性(未选中)来在不受信任的上下文中禁用此功能。
java.
很特殊,因为ClassLoader
会阻止这些包中的非引导类加载器作为反Microsoft措施。