我知道java.xml.bind/JAXB在这个版本中被删除了,所以我们正在尝试用Jakarta来代替它。
当应用程序启动时,我会得到这样的结果:
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)
... ...*类是rt.jar的一部分,我相信它在Java9中被删除了,但最新的雅加达源代码仍然引用它们……这是怎么回事呢?我看到一些有类似问题的帖子,典型的解决方案是Add Maven dependency。
我能做些什么来让它工作吗?
发布于 2020-05-02 00:22:23
事实证明并不像我想的那么糟糕。rt。jar被分解成多个模块,我开始寻找我需要的模块。jaxb-runtime.jar在我看来是正确的,我在它上面运行了string/ grep -它确实包含了所有的com.sun.xml.bind类!
当我将这个jar添加到那些jar中时,我将原始错误更改为“找不到某些其他类”,并且我必须添加更多的jar,直到应用程序满意为止。最后我得到了这个: jakarta.activation.jar,jakarta.xml.bind-api.jar,jaxb-runtime.jar,istack-commons-runtime.jar,stax-ex.jar,FastInfoset.jar,txw2.jar
没有更改清单,makefile或任何其他与构建相关的内容,纯粹是打包问题。长叹一口气。
https://stackoverflow.com/questions/61542627
复制相似问题