vscode在macOS下编译java程序报错Error: A JNI error has occurred, please check your installation and try again的解决
首先我查阅资料,发现出现这个问题大多都在Windows系统上,macos的案例非常少
我遇到的问题是这样的
alun@bogon code % /usr/bin/env /Library/Java/JavaVirtualMachines/temurin-17.jdk/Cont
ents/Home/bin/java -XX:+ShowCodeDetailsInExceptionMessages -cp /Users/alun/Library/Ap
plication\ Support/Code/User/workspaceStorage/44c182534a7eeccee02ee254bb242da3/redhat
.java/jdt_ws/code_452e6079/bin java.sj2.AntiVirus
Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.SecurityException: Prohibited package name: java.sj2
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)
其中最明显的报错是这两行
Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.SecurityException: Prohibited package name: java.sj2
这时候我开始查询csdn,发现大多数人的问题是java版本不兼容和java home想关
由于macos他没有像windows一样简单快捷的修改环境变量的方式,所以只能自己摸索
首先判断是否是版本不兼容的问题
我首先使用java -version和javac - version查询,得到的输出是这样的
alun@alundeMacBook-Pro ~ % java -version
openjdk version "17.0.6" 2023-01-17
OpenJDK Runtime Environment Temurin-17.0.6+10 (build 17.0.6+10)
OpenJDK 64-Bit Server VM Temurin-17.0.6+10 (build 17.0.6+10, mixed mode)
alun@alundeMacBook-Pro ~ % javac -version
javac 17.0.6
此时可以确定,我的java版本和javac版本一致
其次看java home的问题
发现也没问题
最后我灵机一动,搜索下面一行代码Exception in thread “main” java.lang.SecurityException: Prohibited package name: java.sj2
果然啊,图穷匕见了,是我的文件夹目录带java导致报错,修改过后就完成了