2014-04-14 138 views
1

我正在運行Jetty 7 Web應用程序,並想升級到碼頭9.該項目基於Spring框架並使用Maven進行依賴關係管理。有一次,我升級碼頭,它失敗,因爲以下錯誤的開始:從碼頭7升級到碼頭9

java.lang.reflect.InvocationTargetException 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
at java.lang.reflect.Method.invoke(Method.java:606) 
at org.eclipse.jetty.start.Main.invokeMain(Main.java:473) 
at org.eclipse.jetty.start.Main.start(Main.java:615) 
at org.eclipse.jetty.start.Main.main(Main.java:96) 
Caused by: java.lang.NoClassDefFoundError: javax/servlet/http/HttpServletRequest 
at java.lang.Class.getDeclaredConstructors0(Native Method) 
at java.lang.Class.privateGetDeclaredConstructors(Class.java:2493) 
at java.lang.Class.getConstructor0(Class.java:2803) 
at java.lang.Class.newInstance(Class.java:345) 
at org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.configure(XmlConfiguration.java:348) 
at org.eclipse.jetty.xml.XmlConfiguration.configure(XmlConfiguration.java:296) 
at org.eclipse.jetty.xml.XmlConfiguration$1.run(XmlConfiguration.java:1262) 
at java.security.AccessController.doPrivileged(Native Method) 
at org.eclipse.jetty.xml.XmlConfiguration.main(XmlConfiguration.java:1197) 
... 7 more 
Caused by: java.lang.ClassNotFoundException: javax.servlet.http.HttpServletRequest 
at java.net.URLClassLoader$1.run(URLClassLoader.java:366) 
at java.net.URLClassLoader$1.run(URLClassLoader.java:355) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.net.URLClassLoader.findClass(URLClassLoader.java:354) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:425) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:358) 
... 16 more 

我試圖找出有可能導致與servlet的API衝突的依賴,使用maven的依賴關係樹的工具,但沒有多大幫助。錯誤仍然存​​在。

當前運行的Jetty版本7.2.2.v20101205並且想要升級到9.1.3.v20140225。 NB。將Jetty升級到版本7.6.14.v20131031時也會發生此錯誤。基本上任何其他版本,那麼我現在正在使用的版本會導致此錯誤。

任何想法?

回答

0

Jetty 9基於Servlet容器3.0版本。我猜你的Maven依賴引用2.5或以上版本的API

此前3.0:

<dependency> 
    <groupId>javax.servlet</groupId> 
    <artifactId>servlet-api</artifactId> 
    <version>2.5</version> 
</dependency> 

3.0.1和上:

<dependency> 
    <groupId>javax.servlet</groupId> 
    <artifactId>javax.servlet-api</artifactId> 
    <version>3.0.1</version> 
</dependency> 
+0

謝謝,我試過了3.0.1的依賴關係,但是錯誤依然存在。最奇怪的部分是,如果我嘗試升級到版本7.6.14.v20131031,我已經得到錯誤。所以,即使我只將Jetty版本從7.2.x更改爲7.6.x,它已經開始向我拋出錯誤。所有7.x Jetty版本都使用2.5 servlet-api,對吧? – Ruud

0

,我將開始檢查是否有任何servlet-api相關的庫在webapp的戰爭中。