簡體   English   中英

javax.xml.bind.JAXBException 與 Java 11

[英]javax.xml.bind.JAXBException with Java 11

我有一個較舊的小部件應用程序,它正在使用 JAXB,現在正在遷移到 Java 11。
我知道 java.xml.bind/JAXB 已在此版本中刪除,因此我們正在嘗試將其替換為 Jakarta。

我們有 jakarta.activation.jar 和 jakarta.xml.bind-api.jar 並且它適用於運行時編譯,但不適用於編譯

當應用程序啟動時,我得到了這個:

javax.xml.bind.JAXBException: Implementation of JAXB-API has not been found on module path or classpath.
 - with linked exception:
[java.lang.ClassNotFoundException: com.sun.xml.internal.bind.v2.ContextFactory]
  at java.xml.bind/javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:232)
  ... ...

The com.sun.xml.internal.* classes were part of rt.jar, which i believe was removed in Java 9, but the latest jakarta source still refers to them... how is that supposed to work? 我看到一些有類似問題的帖子,典型的解決方案是Add Maven dependency
我不確定細節,但無論如何我們不使用 Maven 或 Gradle 並且沒有 pom.xml。
我能做些什么讓它發揮作用嗎?

事實證明它並沒有我想象的那么糟糕。 室溫。 jar 被分解為多個模塊,我開始尋找我需要的模塊。 jaxb-runtime.jar looked right to me and I ran strings / grep on it - it indeed had all the com.sun.xml.bind classes in it!

當我將這個 jar 添加到那些我原來的錯誤更改為“找不到其他類”時,我不得不添加更多 jars 直到應用程序滿意。 In the end I have this: jakarta.activation.jar, jakarta.xml.bind-api.jar, jaxb-runtime.jar, istack-commons-runtime.jar, stax-ex.jar, FastInfoset.jar, txw2.jar

清單沒有更改,makefile 或任何其他與構建相關的內容,純粹是包裝問題。 大大的嘆息...

暫無
暫無

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

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