这是我的代码:
package java;
public class Main {
public static void main(String[] args)
{
// TODO Auto-generated method stub
System.out.println("Hello, World.");
}
}
我在控制台中收到的错误:
Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.SecurityException: Prohibited package name: java
at java.base/java.lang.ClassLoader.preDefineClass(ClassLoader.java:895)
at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1010)
at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:150)
at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:862)
at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:760)
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:681)
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:639)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:520)
at java.base/java.lang.Class.forName0(Native Method)
at java.base/java.lang.Class.forName(Class.java:467)
at java.base/sun.launcher.LauncherHelper.loadMainClass(LauncherHelper.java:791)
at java.base/sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:686)
答案1
java.lang.SecurityException: Prohibited package name: java
这个错误告诉您问题是什么:您不能使用java
作为包名称(Prohibited package name
)。
这是因为java
内置 Java 对象等位于该包中,并且允许从您的代码访问某些包私有类/方法(如果您的代码位于同一个包中,则允许访问)存在安全风险。请参阅这个 stackoverflow 问题了解更多信息。
解决方案是,假设您不想弄乱内置的 Java 类,那么对您的包使用不同的名称。