apache-camel - 热部署骆驼路由时出现 JAXB ClassNotFoundException com.sun.xml.bind.v2.ContextFactory
问题描述
是的,我知道,自从 JAXB 从 JDK 11 中删除以来,有很多问题和答案。但这一个是特定的。
我有一个 Wildfly 服务器(使用 18.0.1 和 16.0.0 测试)运行并应用了 wildfly-camel 子系统 11.0.1 补丁。该补丁安装 Camel 2.25.0
部署和热部署(当服务器启动时)骆驼路线工作正常! 直到我在同一台服务器上部署 Liferay :-(
然后骆驼路线的Hot-Deploy让我很烦
[java.lang.ClassNotFoundException: com.sun.xml.bind.v2.ContextFactory from [Module "org.apache.camel.spring" version 2.25.0...
例外。
无论我是在 JDK 11 还是 JDK 8 上运行服务器!Liferay 7.3.2 声称可以在两个 JDK 版本上运行,所以我想它与 Liferay 的构建方式有关。阅读这篇文章 http://www.descher.at/descher-vu/2019/01/java-11-jaxb-and-osgi/ 发现 JAXB 主题非常复杂,远未解决。
问题:部署的应用程序如何破坏其他工作的类路径解析?更重要的是:如何解决?
我尝试从 Liferay中删除有问题的 2 个罐子jaxb-api.jar和jaxb-impl.jar 。但这没有帮助。
解决方案
事实证明,错误的根本原因是wildfly-camel 补丁的org.apache.camel.spring模块中缺少对com.sun.xml.bind的依赖项。
我详细提交了这个问题。
看起来Liferay与它无关。因为理论上 jboss-modules 应该分开部署。
推荐阅读
- c++ - 为什么不返回 NULL 会破坏函数?
- android - 离子 - 访问被拒绝找到属性“vendor.camera.aux.packagelist”
- class - 从另一个类颤振 setState
- mongodb - 仅当所有匹配条件时才返回所有文档
- ag-grid-angular - 角度 ag-grid 如何设置标题样式
- javascript - 为子组件(useRef)反应滑轮事件?
- python - 带有 chrome 驱动程序的 Selenium python,无法禁用图像加载
- php - 如何将php版本更改为7.0.33?
- javascript - VueJs 在数组中渲染图像对象
- laravel - 从组中检索所有用户 [laravel]