我試圖在Jetty(v9.0)webserver上啓動非常簡單的Java webapp。在1.6 JVM上運行的Jetty無法運行在Java 1.6上編譯的webapp
使用Maven我建立並創建了戰爭和可以看到在清單文件中,我使用的Java 1.6u43編譯在OS X 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
我在Ubuntu上運行Jetty,可以看到,我的Java 1.6.0_45的版本略高。如果Java是向下兼容的,我的Java應用程序應該在碼頭上運行,但它與不支持的次版本沒有
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.
其他人在互聯網上所面臨的,當他們試圖在1.6上運行的Java 1.7編譯的應用程序*這個問題JVM中。我無法弄清楚爲什麼會發生這種情況,在我的情況下,兩個ENV都是1.6 *,部署ENV的JVM的版本略高。
如果我在使用java 1.6.0_45的Tomcat上部署應用程序,它不會抱怨,但工作正常。我在這裏錯過了一些微不足道的東西嗎?
正確,Jetty 9定位於即將發佈的servlet 3.1規範,該規範將要求java 1.7 –