简体   繁体   中英

Jetty running on 1.6 JVM is unable to run webapp compiled on Java 1.6

I am trying to start very simple Java webapp on Jetty (v9.0) webserver.

Using maven I built and created the war and as can be see in the manifest file, I used Java 1.6u43 for compilation on OS X

Contents of META-INF/MANIFEST.MF

Manifest-Version: 1.0
Archiver-Version: Plexus Archiver
Created-By: Apache Maven
Built-By: irraju
Build-Jdk: 1.6.0_43

I am running Jetty on Ubuntu and as can be seen, I have slightly higher version of the java 1.6.0_45. If java is backward compatible, my java application should run on jetty but it is failing with unsupported minor version

root# java -version
java version "1.6.0_45"
Java(TM) SE Runtime Environment (build 1.6.0_45-b06)
Java HotSpot(TM) Client VM (build 20.45-b01, mixed mode, sharing)

root# java -DDEBUG -jar start.jar 
Exception in thread "main" java.lang.UnsupportedClassVersionError: org/eclipse/jetty/start/Main : Unsupported major.minor version 51.0
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:615)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
    at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
Could not find the main class: org.eclipse.jetty.start.Main. Program will exit.

Other people on the internet are facing this issue when they are trying to run Java 1.7 compiled applications on 1.6* JVMs. I am unable to figure out why this is happening in my case where both the ENVs are 1.6* and deployment ENV has slightly higher version of JVM.

If I deploy the application on Tomcat that is using java 1.6.0_45, it doesn't complain though and works fine. Am I missing something very trivial here?

Jetty 9 requires to be ran with Java 7, according to this list of Jetty versions .

You can try to compile Jetty 9 yourself using Java 6, but that will most likely not work (otherwise, the Jetty devs might've done that themselves as well).

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM