2014-12-05 131 views
1

我正在使用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-apijaxb-impl罐子不加载,所以我加入server.xmlparentLast类加载选项:

<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-apijax-impl罐子到这个文件夹

<library id="shared-libs"> 
    <fileset dir="${server.config.dir}/lib/global" include="*.jar"/> 
</library> 

但是我仍然有ClassCastException,看起来它仍然使用parentFirst类加载?

我发现其他JAXB ClassCastException异常线程,但使用自由曲线不是当..

+1

您是否尝试从您的应用程序中删除这些罐子以仅加载服务器类? – Gas 2014-12-06 11:26:02

+0

不,我没有尝试,因为我们需要更新的库版本而不是WebSphere提供的版本。 – tazzer 2014-12-08 06:25:19

+0

Liberty拥有'jaxb-2.2'。你需要哪一个?你还在'server.xml'中启用了哪些功能? – Gas 2014-12-08 10:02:52

回答

1

也许这是一个错字,但在您的文章,你有delegation="parentFirst"而不是parentLast

你检查只是改变代表团应用程序是这样的:

<enterpriseApplication id="ear-app" location="C:/ws/ear/exploded/ear-app.ear" name="ear-app" > 
    <classloader delegation="parentLast"/> 
</enterpriseApplication> 

欲了解更多详情,请参阅Overriding a provided API with an alternative version

+0

噢,是的,这是一个错字,我用parentLast – tazzer 2014-12-08 09:55:23

0

我曾通过不使用parentLast的和身边的问题。谢谢您的帮助。

相关问题