一、错误现象:
当改变了jdk版本时,在编译java时,会遇到Unsupported major.minor version错误。
错误信息如下 :
Unsupported major.minor version 50.0
Unsupported major.minor version 49.0 (我在jdk1.4 和1.5切换时就遇到了这个错误)
Unsupported major.minor version 48.0
二、错误原因:
类似错误均属于Java版本问题,即JDK版本过低,只要选择相对应的JDK版本编译即可。
48,49,50是Java编译器内部的版本号:
Unsupported major.minor version 50.0 对应于 JDK1.6(JRE1.6)
Unsupported major.minor version 49.0 对应于 JDK1.5(JRE1.5)
Unsupported major.minor version 48.0 对应于 JDK1.4(JRE1.4)
三、出错情况(Maven情况)
编译的时候在 pom.xml 文件中指定了编译的版本1.8,但是在运行的时候在 Eclipse 里面运行的时候用的是默认版本 1.7(跟编译时版本不一致,比编译版本要低)。
编译 pom.xml 文件 jdk 设置:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.2</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>${project.build.sourceEncoding}</encoding>
</configuration>
</plugin>
运行时设置 jetty:run:
maven运行设置(默认情况下 JRE 是默认值,需要我们手动去修改它):
默认JRE设置(未手动修改之前)
手动修改 JRE 版本
从上面可以看出来,我在使用 maven 打包的时候使用的是 jdk1.8,运行的时候却使用的是jdk1.7,所以才会报出上面的错误。
因此在进行 maven 的开发,打包,和运行的时候要注意:如果你的jdk版本跟默认的版本不一致,那么你需要手动的把它们的 jdk 版本统一起来,否则就会遇到很多编译上的问题。
修改的地方:
- 开发时的设置:包括你的 buildPath 设置,compiler设置。
- pom.xml 中maven-compiler-plugin 设置.
- 包括你在开发环境中运行时候的 jdk 版本设置(在 Run->Run Configurations… 里面,每一个运行的实例都可以设置 JRE 的版本),以及真实生产环境运行时的 版本设置,如下图:。
扩展:
大部分情况下我们都不需要修改 Run Configurations… 这个参数,那是因为大部分情况下我们开发时 JDK 版本、运行时的JDK版本、还有我们开发环境的默认 JDK 版本都是一致的。