在 eclipse 上运行 java 程序时出现“错误:发生了 JNI 错误,请检查您的安装并重试”

在 eclipse 上运行 java 程序时出现“错误:发生了 JNI 错误,请检查您的安装并重试”

这是我的代码:

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 类,那么对您的包使用不同的名称。

相关内容