Unsupported major.minor version 52.0

一、错误现象:

当改变了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>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

运行时设置 jetty:run: 
maven运行设置(默认情况下 JRE 是默认值,需要我们手动去修改它):

默认JRE设置(未手动修改之前) 

手动修改 JRE 版本 

从上面可以看出来,我在使用 maven 打包的时候使用的是 jdk1.8运行的时候却使用的是jdk1.7,所以才会报出上面的错误。

因此在进行 maven 的开发,打包,和运行的时候要注意:如果你的jdk版本跟默认的版本不一致,那么你需要手动的把它们的 jdk 版本统一起来,否则就会遇到很多编译上的问题。

修改的地方:

  1. 开发时的设置:包括你的 buildPath 设置,compiler设置。
  2. pom.xml 中maven-compiler-plugin 设置.
  3. 包括你在开发环境中运行时候的 jdk 版本设置(在 Run->Run Configurations… 里面,每一个运行的实例都可以设置 JRE 的版本),以及真实生产环境运行时的 版本设置,如下图:。

扩展: 
大部分情况下我们都不需要修改 Run Configurations… 这个参数,那是因为大部分情况下我们开发时 JDK 版本、运行时的JDK版本、还有我们开发环境的默认 JDK 版本都是一致的。

posted @ 2017-05-19 15:29  疯子110  阅读(643)  评论(0编辑  收藏  举报