簡體   English   中英

如何修復JDK11 Tomcat9 Spring應用程序上的JAVAX運行時錯誤

[英]How to fix JAVAX runtime error on JDK11 Tomcat9 Spring Application

在Tomcat9上啟動我的應用程序時遇到的特定錯誤。 春季版本:5.1.5。

SEVERE: Error configuring application listener of class [org.springframework.web.context.request.RequestContextListener] java.lang.NoClassDefFoundError: javax/xml/ws/WebServiceRef

關於此錯誤,有多個答案都建議添加Maven依賴項。 我添加了以下依賴項:

POM.xml

我的構建路徑:

在此處輸入圖片說明

WebServiceRef類可在包資源管理器中找到:

在此處輸入圖片說明

在Tomcat9上啟動應用程序時,控制台中會顯示此錯誤。 這是更多的堆棧跟蹤: 在此處輸入圖片說明

SEVERE: Error configuring application listener of class [org.springframework.web.context.request.RequestContextListener] java.lang.NoClassDefFoundError: javax/xml/ws/WebServiceRef at org.apache.catalina.core.DefaultInstanceManager.populateAnnotationsCache(DefaultInstanceManager.java:303) ...more stuf.... java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:566) at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:355) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:495)

任何幫助或建議,將不勝感激!

更新1:以下是一些.jar文件,這些文件被復制到WEB-INF / lib下的最終.war版本中。 這里有4個新的Maven依賴項及其版本,但是也可能有重復的.jar文件。

在此處輸入圖片說明

更新2:直接將下顎API jar復制到我的Tomcat Classpath中解決了運行時錯誤...因此,該應用程序現在正在啟動,但是當實際部署.war文件時,我將如何克服這個問題?

在此處輸入圖片說明

這個問題歸結為Docker Desktop(Windows)干擾Tomcat,特別是Tomcat的管理端口8006 ,這迫使我更改端口號以允許Tomcat啟動(例如,從8006到8007 )。 我在某個時間點有一個舊的Tomcat容器,當我的計算機通過Docker Desktop啟動時卻沒有意識到,這可能已經啟動。

假設您的pom.xml具有必要的依賴性,請完成解決此問題的步驟。

  1. 停止Docker桌面
  2. 使用最新的JDK11構建並根據需要更新JAVA_HOME
  3. 將默認的Tomcat管理服務器端口恢復為8006
  4. 重新發布/重新啟動Tomcat服務器

我認為,在大多數情況下為解釋這一問題將得到解決這里的更新與所需的依賴pom.xml中。 就我而言,這完全是環境問題,出於某種原因,Docker桌面阻止了Tomcat在運行時訪問jaws-api-2.3.1.jar文件。 通過上述問題中的“更新2”確認了Tomcat無法訪問此.jar文件。

我的pom.xml最終僅需要以下各項: 在此處輸入圖片說明

通過在pom.xml中使用此依賴項來嘗試:

<dependency>
    <groupId>javax.annotation</groupId>
    <artifactId>javax.annotation-api</artifactId>
    <version>1.3.2</version>
</dependency>
<dependency>
    <groupId>javax.xml.bind</groupId>
    <artifactId>jaxb-api</artifactId>
    <version>2.4.0-b180725.0427</version>
</dependency>
<dependency>
    <groupId>org.glassfish.jaxb</groupId>
    <artifactId>jaxb-runtime</artifactId>
    <version>2.4.0-b180725.0644</version>
</dependency>

我剛剛嘗試過,它可以與tomcat 9和spring 5.1.5一起使用

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM