Websphere Liberty 8.5.5.9中的javax.activation.DataHandler冲突

Websphere Liberty 8.5.5.9中的javax.activation.DataHandler冲突,websphere,classloader,websphere-liberty,server.xml,Websphere,Classloader,Websphere Liberty,Server.xml,这是我在上一个问题中的故事: 我已经解决了和WebSphereLiberty特性之间的冲突,通过使用首先定义应用程序的JAR加载 在我开始使用本教程中描述的jax rs 2.0实现文件上传之前,一切都很顺利 当我的代码到达以下行时: stream=dataHandler.getInputStream()stream是InputStream的类型,即,我试图对DataHandler对象执行某些操作。它会引发异常: [ERROR ] Error occurred during error han

这是我在上一个问题中的故事: 我已经解决了和WebSphereLiberty特性之间的冲突,通过使用
首先定义应用程序的JAR加载

在我开始使用本教程中描述的jax rs 2.0实现文件上传之前,一切都很顺利

当我的代码到达以下行时:
stream=dataHandler.getInputStream()
stream
InputStream
的类型,即,我试图对
DataHandler
对象执行某些操作。它会引发异常:

[ERROR   ] Error occurred during error handling, give up!
loader constraint violation: loader (instance of com/ibm/ws/classloading/internal/ParentLastClassLoader) previously initiated loading for a different type with name "javax/activation/DataHandler"
[ERROR   ] SRVE0777E: Exception thrown by application class 'org.apache.cxf.interceptor.AbstractFaultChainInitiatorObserver.onMessage:116'
java.lang.RuntimeException: org.apache.cxf.interceptor.Fault: loader constraint violation: loader (instance of com/ibm/ws/classloading/internal/ParentLastClassLoader) previously initiated loading for a different type with name "javax/activation/DataHandler"
    at org.apache.cxf.interceptor.AbstractFaultChainInitiatorObserver.onMessage(AbstractFaultChainInitiatorObserver.java:116)
    at [internal classes]
Caused by: org.apache.cxf.interceptor.Fault: loader constraint violation: loader (instance of com/ibm/ws/classloading/internal/ParentLastClassLoader) previously initiated loading for a different type with name "javax/activation/DataHandler"
    at org.apache.cxf.service.invoker.AbstractInvoker.createFault(AbstractInvoker.java:163)
    ... 1 more
Caused by: java.lang.LinkageError: loader constraint violation: loader (instance of com/ibm/ws/classloading/internal/ParentLastClassLoader) previously initiated loading for a different type with name "javax/activation/DataHandler"
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:760)
    at com.ibm.ws.classloading.internal.AppClassLoader.definePackageAndClass(AppClassLoader.java:327)
    at [internal classes]
    at ****.EventsAPI.handleUploadedEventForm(EventsAPI.java:174)
    at ****.EventsAPI.postFormData(EventsAPI.java:114)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:497)
    at com.ibm.ws.jaxrs20.server.LibertyJaxRsServerFactoryBean.performInvocation(LibertyJaxRsServerFactoryBean.java:636)
    ... 1 more
实际上,在IBM的
IAttachment
实现中,有
DataHandler
对象作为和
DataHandler
的一部分,它们是相互冲突的

那么,如何解决呢?可以通过配置来解决吗?编写自定义类加载器不是可接受的解决方案


更新:我的问题不清楚,但现在我有两个阶段,一个是当我使用
我的邮件工作,但文件上传不工作,而没有
我的邮件工作,但文件上传工作。当我在WAS Liberty 8.5.5.7或8.5.5.8上部署我的应用程序时,它工作正常,问题只存在于8.5.5.9中,实际上我找到了解决此问题的方法

首先,我将范围更改为
提供了我的库中包含的所有依赖项的
。我再次使用我的库发送电子邮件,这取决于:

    <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-email</artifactId>
        <version>1.4</version>
        <scope>provided</scope>
    </dependency>

    <dependency>
        <groupId>commons-io</groupId>
        <artifactId>commons-io</artifactId>
        <version>2.4</version>
        <scope>provided</scope>
    </dependency>

org.apache.commons
已显式包含此库的。我还删除了:


唯一一个问题仍然没有答案,为什么以前会发生冲突?如果有人能提供更详细的解释,那就太好了。

您是否尝试过在server.xml中的
元素中嵌套
元素?这应该确保应用程序提供的任何LIB优先于Liberty中的任何冲突类。是的,我没有很好地解释我自己(现在我更新了我的问题),但是使用了
邮件工作但上传不工作,没有
上传工作但邮寄不工作。问题只存在于
8.5.5.9