【问题标题】:Apache axis2/axiom NoSuchMethodErrorApache axis2/axiom NoSuchMethodError
【发布时间】:2015-08-31 08:52:08
【问题描述】:

将 RAD v7 与 WebSphere AS v6.1 结合使用,我收到以下信息;

java.lang.NoSuchMethodError: org/apache/axiom/om/OMAbstractFactory.getMetaFactory()Lorg/apache/axiom/om/OMMetaFactory;

其他答案(herehere)表明这是由于 jar 冲突造成的。我已经安装了最新的 RAD/WS 修复包,确保我只使用一个版本的axis2(v1.6.2)和axiom-api(v1.2.13),多次清理和构建我的工作区并确保正确的罐子是正在部署。我还尝试将 WAS 类加载器策略设置为“最后一个父级”。

我的问题:除了 jar 版本冲突之外,还有其他原因会导致此问题吗?

更长的错误:

WebApp E [Servlet 错误]-[EOEServlet]: java.lang.NoSuchMethodError: org/apache/axiom/om/OMAbstractFactory.getMetaFactory()Lorg/apache/axiom/om/OMMetaFactory; 在 org.apache.axiom.om.OMXMLBuilderFactory.createOMBuilder(OMXMLBuilderFactory.java:150) 在 org.apache.axiom.om.OMXMLBuilderFactory.createOMBuilder(OMXMLBuilderFactory.java:133) 在 org.apache.axiom.om.OMXMLBuilderFactory.createOMBuilder(OMXMLBuilderFactory.java:104) 在 org.apache.axis2.util.XMLUtils.toOM(XMLUtils.java:590) 在 org.apache.axis2.util.XMLUtils.toOM(XMLUtils.java:575) 在 org.apache.axis2.deployment.DescriptionBuilder.buildOM(DescriptionBuilder.java:97) 在 org.apache.axis2.deployment.AxisConfigBuilder.populateConfig(AxisConfigBuilder.java:90) 在 org.apache.axis2.deployment.DeploymentEngine.populateAxisConfiguration(DeploymentEngine.java:857) 在 org.apache.axis2.deployment.FileSystemConfigurator.getAxisConfiguration(FileSystemConfigurator.java:116) 在 org.apache.axis2.context.ConfigurationContextFactory.createConfigurationContext(ConfigurationContextFactory.java:64) 在 org.apache.axis2.context.ConfigurationContextFactory.createConfigurationContextFromFileSystem(ConfigurationContextFactory.java:210) 在 org.apache.axis2.client.ServiceClient.configureServiceClient(ServiceClient.java:151) 在 org.apache.axis2.client.ServiceClient.(ServiceClient.java:144)

【问题讨论】:

  • 安装了 Web 服务功能包的 WebSphere 配置文件是否会出现这种情况?
  • @Andreas Veithen,确实如此。 WebServices 功能包 v6.1.0.9
  • 我一直无法专门解决这个问题,但我相信所提供的答案对于任何有类似问题的人来说都是全面的。

标签: websphere axis2 rad nosuchmethoderror axiom


【解决方案1】:

Axis2 和 Axiom 是 7.0 版及更高版本以及 6.1 版(安装了 Web 服务功能包)中的 WebSphere 运行时的一部分。它们在 WebSphere 中提供 JAX-WS 实现,并且它们的类对应用程序是可见的。这会导致与打包自己的这些库版本的应用程序发生冲突。要解决这个问题,需要将类加载器策略切换到最后一个父级。

请注意,在某些情况下,这可能还不够,您需要按照此处所述进行一些额外的更改:

https://axis.apache.org/axis2/java/core/docs/app_server.html

【讨论】:

    【解决方案2】:

    无论如何,Axiom v1.2.13 确实是与 Axis2 v1.6.2 一起使用的正确版本。

    我有 WAS 8.5(与您的 6.1 相比),很久以前我就停止使用 RAD Developer(我通常能够使用 Eclipse 完成我想要/需要的一切)。

    但您可能需要查看 WAS 类加载器查看器以确定您的应用是否实际加载了正确的 .jar:

    http://weblogic-wonders.com/weblogic/2012/12/18/troubleshooting-classloader-issues-with-websphere/

    【讨论】:

    • 谢谢@paulsm4,很高兴知道。我确实检查了我的 installedApps 目录并确认正在部署正确的 jar。
    • 其他建议: 1) 检查您的应用程序的 WAS 类加载器策略;将其设置为“最后一个父级”,2) 仅 WAS 是否仍然存在问题(如果您将 RAD 开发人员排除在外)?
    • 很遗憾,我暂时无法移动到其他工作区。我试过设置“最后一个父母”。我将使用这些详细信息更新问题。
    • 请尝试一下,然后发回您的发现。另请查看引用的link Andreas Veithen。祝你好运!
    【解决方案3】:

    如其他答案中所述,它与网络球轴库冲突。使用 Axis2 jar 创建共享库并将它们与 EAR 相关联,这对我有用。 Steps for creating shared library

    【讨论】:

      【解决方案4】:

      同意这里的大部分帖子。我们所做的是在我们的库中显式添加axis2(1.6.2)jar并重新部署。这解决了问题。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-09-14
        • 2011-04-21
        • 2011-10-11
        • 1970-01-01
        • 2011-01-13
        • 1970-01-01
        • 2011-12-05
        • 1970-01-01
        相关资源
        最近更新 更多