1. java配置完多版本jdk之后java -version和javac -version版本不一致
1.1. Java编译时错误:A JNI error has occurred, please check your installation and try again
Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.UnsupportedClassVersionError: com/zzs/szfz/SzfzApplication has been compiled by a more recent version of the Java Runtime (class file version 61.0), this version of the Java Runtime only recognizes class file versions up to 52.0

1.2. java -version和javac -version
在桌面,开始->运行->键入cmd 回车,进入windows命令行。


当前默认目录为C盘Users文件夹下的Administrator文件夹。一般而言,我们习惯改变当前目录。由于windows有磁盘分区,若要跳到其他磁盘,例如E盘,有几种方法:
(1)输入命令: pushd 路径(此命令可将当前目录设为所希望的任一个已存在的路径)
(2)输入命令: e: 转移到e盘,然后再输入 cd 转移到所希望的已知路径。
希望在windows命令行下使用javac、java等命令,那么当前电脑必须安装了jdk,并且将jdk的bin目录添加到环境变量path下了。这个不用多说。那么让我们看一下如何使用javac、java吧。
java和javac命令的区别在于:javac用于将Java源代码编译为字节码文件(.class),而java命令则负责运行这些字节码文件。
| 项目 | Value | Value |
|---|---|---|
| 命令 | 用途 | 示例 |
| javac | 编译Java源代码文件为字节码文件 | javac hello.java |
| java | 运行字节码文件 | java hello |
要注意的是,如果源代码中声明了包,必须使用类的完整限定名来运行类。此外,javac报错通常意味着源代码存在问题,如缺少分号、括号不匹配、导入错误等,定位并修复这些问题即可。
1.3. 原因分析
重复安装了JDK,电脑中存在不同版本JDK
1.3.1. 命令行
命令行中通过“java -version”和“javac -version”查询SDK版本
设置了环境变量JAVA_HOME为D:jdkjdk-1.8.0_74的安装目录,但在cmd命令行下:
执行java -version显示:“jdk-1.8.0_74”
而执行javac -version显示:“jdk-17.0.7”

1.3.2. 分析
同时安装了jdk-1.8.0_74和jdk-17.0.7,且PATH变量中,C:WINDOWSsystem32目录在%JAVA_HOME%in之前。
在Windows命令行下执行命令时,先从当前目录搜素,然后按照PATH设置的路径依次查找命令,而JRE安装时会将java.exe安装到C:WINDOWSsystem32目录下,所以执行java -version命令时,查看的是jre的版本,而javac -version时查看的jdk的版本。
1.3.3. 解决方案

将%JAVA_HOME%in加在PATH变量的头,执行java -version和javac -version,均为jdk-17.0.7版。


&emsp自己添加的两行放到javapath那一行的上面,不管是通过把上面那一行挪下来还是下面那两行挪上去都可以(相对位置自己添加的在原先的上面就可以了,这是因为PATH中的第一行javapath的优先级高于你后面自己配置JAVA_HOME的内容)。





