package java.basic;
public class Test {
public static void main(String[] args) {
int जानिए = 7;
System.out.println(जानिए);
}
}
上面的课正在编译,但是在运行异常后
java.lang.SecurityException: Prohibited package name: java.basic
at java.lang.ClassLoader.preDefineClass(Unknown Source)
at java.lang.ClassLoader.defineClassCond(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$000(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)
Exception in thread "main"
答案 0 :(得分:2)
请参阅docs:
Java语言中的包本身以 java。或javax。
开头
java.
不适合你,英文字母有26个字母。使用它们生成java
以外的名称。
另见java.lang
:
提供对Java设计至关重要的类 编程语言。
它适用于Java代码,默认情况下会在每个代码中导入。
答案 1 :(得分:2)
因为否则您的类将可以访问标准JDK类的default (no modifiers) / protected
成员,而这些成员并不打算向开发人员公开其内部详细信息。
禁止java.*
个包中的自定义类禁止您利用此类内容。
答案 2 :(得分:1)
允许使用名为java的用户创建包将允许访问包私有字段,方法和构造函数。
答案 3 :(得分:1)
java
是保留的包名称。只有JVM
内的类可以驻留在此包中。
如果有人可以在java
包中写入,那么可能会导致库任意用自己的实现替换核心Java类。这可能导致很多事情,从破坏核心Java功能到执行恶意代码。