1. 程式人生 > >Unsupported major.minor version 52.0 (unable to load class XXX

Unsupported major.minor version 52.0 (unable to load class XXX

java專案構建從高版本JDK改為低版本JDK報錯。這是再次編譯時使用的JDK版本比你原來編譯的版本低所導致的。
更多精彩請閱讀 東陸之滇的csdn部落格:http://blog.csdn.net/zixiao217
maven專案在伺服器上構建時報錯(Unsupported major.minor version 52.0 ):
java.lang.UnsupportedClassVersionError: com/byron4j/listener/InitListener : Unsupported major.minor version 52.0 (unable to load class com.byron4j.listener.InitListener)
at org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2961)
at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1210)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1690)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1571)
at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:506)
at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:488)
at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:115)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4932)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5528)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:652)
at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:1095)
at org.apache.catalina.startup.HostConfigD

eployWar.run(HostConfig.java:1930)atjava.util.concurrent.ExecutorsRunnableAdapter.call(Executors.java:471)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)

原來本地專案指定的JDK版本是1.8的:

<plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.5.1</version>
        <configuration>
            <source>1.8</source>
            <target
>
1.8</target> </configuration> </plugin>

部署到linux伺服器上之後,啟動專案時報Unsupported major.minor version 52.0 錯誤,檢查發現是linux伺服器上JDK版本過低導致的,然後將專案指定JDK版本為1.7,再發布啟動OK了。

<plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.5.1</version>
        <configuration>
            <source>1.7</source>
            <target>1.7</target>
        </configuration>
</plugin>

JDK版本在官方對應的版本號列表如下:

JDK 8.0 = 52,
JDK 7.0 = 51,
JDK 6.0 = 50,
JDK 5.0 = 49,
JDK 1.4 = 48,
JDK 1.3 = 47,
JDK 1.2 = 46,
JDK 1.1 = 45

正是指定的JDK版本為52,但是由於伺服器是JDK 7導致引發Unsupported major.minor version 52.0