IBM Websphere portlet类加载器问题

IBM Websphere portlet类加载器问题,websphere,portlet,websphere-portal,Websphere,Portlet,Websphere Portal,我目前正在处理一个使用commons collections jar文件的portlet,并收到一个NoSuchMethodError。为了解决这个问题,我需要将WAR文件的类加载器从PARENT_FIRST更改为PARENT_LAST(在application.xml文件中) 但是,当我这样做时,我的portlet将不会启动,当我登录到控制台时,它会显示消息“portlet被临时禁用”。如果我首先将类加载器更改回PARENT_,那么它将再次启动,但随后会出现NoSuchMethodError

我目前正在处理一个使用commons collections jar文件的portlet,并收到一个NoSuchMethodError。为了解决这个问题,我需要将WAR文件的类加载器从PARENT_FIRST更改为PARENT_LAST(在application.xml文件中)

但是,当我这样做时,我的portlet将不会启动,当我登录到控制台时,它会显示消息“portlet被临时禁用”。如果我首先将类加载器更改回PARENT_,那么它将再次启动,但随后会出现NoSuchMethodError

有人对如何解决这个问题有什么建议吗?

@MTH

请尝试将公用集合添加为共享库。有关其他人如何使用共享库支持的示例,请参见此处[1]。这将为您提供步骤,只需对需要从WAS的类加载器重写/替换的JAR执行此操作

[1]

谢谢,
dims

我不知道怎么做,但今天当我收到“portlet被临时禁用”时,我开始在日志中收到错误消息。我得到了一个java.lang.LinkageError,这是因为我有servlet-api-2.5.jar和一个jaxb jar,它与webshpere j2ee.jar冲突。一旦我删除了这些依赖项并将classloader设置为PARENT_LAST,它似乎就可以正常工作了。似乎很多人都面临着类似的问题。下面的链接也很有用

您还没有提供任何日志。。。但是,在将应用程序设置为运行
PARENT\u LAST
时,最重要的一点是,应用程序没有绑定任何可能与WebSpherePortal提供的类冲突的系统级类。例如,与Portlet规范或JavaEE规范相关的类。

您需要调查日志以确定“Portlet被临时禁用”的原因,然后有人可以尝试帮助解决该问题。在上述场景中,它只会被临时禁用,否则它会工作。我现在想要使用的commons collections jar位于一个单独的实用程序项目中,并且已经添加到我的portlets j2ee web模块依赖项中。这确保了我的项目所需的所有库都位于一个位置。我将尝试您上面提到的方法,看看它是否有效,但您是否知道更好的修复方法,因为在部署到不同环境时,这可能是一场噩梦。我仍然不明白为什么将WAR的类加载器从PARENT_FIRST更改为PARENT_LAST会破坏portlet。我已经在上面描述的链接中尝试了这两种方法,虽然我没有得到“portlet被临时禁用”,但仍然得到NoSuchMethodError,因此类加载器似乎仍然是首先执行PARENT_。有人还有什么建议吗?