2013-04-18 73 views
5

我試圖在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上部署應用程序,它不會抱怨,但工作正常。我在這裏錯過了一些微不足道的東西嗎?

回答

10

根據此list of Jetty versions,Jetty 9需要使用Java 7運行。

您可以嘗試使用Java 6自己編譯Jetty 9,但這很可能不起作用(否則,Jetty開發人員也可能自己也這樣做)。

+0

正確,Jetty 9定位於即將發佈的servlet 3.1規範,該規範將要求java 1.7 –

相關問題