我是 Java 的新手,我有一个程序返回以下我完全无法弄清楚的错误。我用谷歌搜索了一切。你们能帮帮我吗?
package java.lang;
public class S1 {
public static void main(String[] args) {
for (int i=1;i<=1000;i++)
{
String str = "1" +i;
}
}
}
Exception in thread "main" java.lang.SecurityException: Prohibited package name: java.lang
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)
我正在使用 Eclipse,并且正在使用 S1.java
文件中的包 java.lang
。
最佳答案
您不能将新内容放入 java.lang
包中。它由语言保留,因为这是核心 Java 内容已经存在的地方。事实上,java.lang
包中的所有内容都默认隐式导入到任何 Java 代码中。
它包含“Java 编程语言设计的基础类”。 (来自 the docs)。由于用户定义的类根据定义不能对语言的设计至关重要,因此禁止将内容放在那里。允许用户将代码放入 java.lang
包中也是一个问题,因为这会将定义在那里的任何包域内容暴露给用户。
只需更改您的包名称(几乎任何其他名称),您就可以开始了。按照惯例,包名称通常是小写的,但您可以使用对您的项目有意义的任何名称。查看tutorial on packages了解更多。
关于java - 线程 "main"java.lang.SecurityException : Prohibited package name: java. lang 中的异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17354275/