[英]Exclude javax.servlet package from com.google.gwt dependency on pom.xml
[英]Maven dependency javax.servlet must be included in POM for new build server
我有一個新的nexus服務器和一個新的生成服務器。 我mvn打包了一個項目,並進入測試階段時出現以下錯誤:
org.mule.api.registry.RegistrationException: Failed to invoke lifecycle phase "initialise" on object: org.mule.config.bootstrap.SimpleRegistryBootstrap@191a01dd (org.mule.api.lifecycle.LifecycleException)
Caused by: java.lang.ClassNotFoundException: javax.servlet.http.HttpServletRequest
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
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)
... 80 more
NOT FOUND
我在解決此問題時創建了一個准系統原型pom。 其中包括javax.servlet,所以我想可能是它,而且確實可以解決問題。
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>${servlet-api-release-version}</version>
<scope>provided</scope>
</dependency>
開放式問題-為什么會這樣?
在編譯從javax.servlet
包中導入內容的類時,需要在類路徑上具有該依賴關系。
例如,當您擁有public class FooServlet extends HttpServlet
,Java編譯器需要能夠獲取javax.servlet.http.HttpServlet
來檢查父級是否不是final
,是否正在實現所有抽象方法,等等。
然后需要將javax.servlet
依賴項標記為pom.xml
provided
的。 這是因為所有servlet容器都已包含該依賴性。 如果你不能從你排除這個圖書館戰爭中, HttpServlet
Web應用程序的類將是從不同HttpServlet
由servlet容器中使用的類(即FooServlet instanceof HttpServlet
是假的Java類不僅受它們的限定名定義,以及他們的類加載器)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.