0

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

但是,当我这样做时,我的 portlet 将不会启动,并且当我登录到控制台时,它会显示消息“该 portlet 被暂时禁用”。如果我将类加载器改回 PARENT_FIRST,那么它将再次启动,但随后我得到 NoSuchMethodError。

有人对如何解决此问题有任何建议吗?

4

3 回答 3

2

我不知道怎么做,但是今天当我收到“Portlet 暂时禁用”时,我开始在日志中收到错误消息。我得到了一个 java.lang.LinkageError,这是因为我有 servlet-api-2.5.jar 和一个与 webshpere j2ee.jar 冲突的 jaxb jar。一旦我删除了这些依赖项并将类加载器设置为 PARENT_LAST,它似乎可以正常工作。似乎很多人都面临着类似的问题。下面的链接也很有用http://forum.springsource.org/showthread.php?33663-dispatcher-servlet-quot-not-a-servlet-class-quot-in-websphere

于 2011-06-02T14:40:34.973 回答
0

@MTH,

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

[1] http://portals.apache.org/jetspeed-2/deployguide/deploying-jetspeed-to-websphere.html#section_4_2

谢谢,暗淡

于 2011-06-01T17:28:51.230 回答
0

您还没有提供任何日志......但是,在设置应用程序运行时要注意的最重要的事情之一PARENT_LAST是,您的应用程序没有与任何可能与提供的类冲突的系统级类捆绑在一起由 WebSphere Portal 提供。例如,属于 Portlet 规范或 JavaEE 规范的类。

于 2012-09-24T18:34:47.070 回答