我正在使用WebSphere Liberty Profile服务器版本8.5.5.3。我有一个包含多个战争的耳朵。我将它们全部展开(耳朵以及模块内部的战争)。WebSphere Liberty配置文件JAXBContext ClassCastException
当部署它,我得到下面的类转换异常:
java.lang.RuntimeException: javax.xml.bind.JAXBException:
ClassCastException: attempting to cast bundleresource://67.fwk-1166858817/javax/xml/bind/JAXBContext.class
to jar:file:/C:/ws/IBM/java_1.7_64/jre/lib/rt.jar!/javax/xml/bind/JAXBContext.class.
Please make sure that you are specifying the proper ClassLoader.
我盘算了一下,问题是,我捆绑jax-api
和jaxb-impl
罐子不加载,所以我加入server.xml
的parentLast
类加载选项:
<enterpriseApplication id="ear-app" location="C:/ws/ear/exploded/ear-app.ear" name="ear-app" >
<classloader delegation="parentLast" commonLibraryRef="provided-jars" privateLibraryRef="shared-libs"/>
</enterpriseApplication>
我说我jax-api
和jax-impl
罐子到这个文件夹
<library id="shared-libs">
<fileset dir="${server.config.dir}/lib/global" include="*.jar"/>
</library>
但是我仍然有ClassCastException
,看起来它仍然使用parentFirst
类加载?
我发现其他JAXB ClassCastException异常线程,但使用自由曲线不是当..
您是否尝试从您的应用程序中删除这些罐子以仅加载服务器类? – Gas 2014-12-06 11:26:02
不,我没有尝试,因为我们需要更新的库版本而不是WebSphere提供的版本。 – tazzer 2014-12-08 06:25:19
Liberty拥有'jaxb-2.2'。你需要哪一个?你还在'server.xml'中启用了哪些功能? – Gas 2014-12-08 10:02:52