它是“javax”非法(保留)包名吗?

时间:2013-07-20 15:36:57

标签: java packages naming

我发现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上尝试过它)

1 个答案:

答案 0 :(得分:3)

javax.用于扩展(可能在JRE中),因此确保可以在这些包中定义类。 IIRC,可以通过将javax.添加到package.definition安全属性(未选中)来在不受信任的上下文中禁用此功能。

java.很特殊,因为ClassLoader会阻止这些包中的非引导类加载器作为反Microsoft措施。