2

使用 ant,我试图调用一个自定义任务,其中我试图使用 Axis2 调用 Web 服务。我通过父 jar 中的 Class-Path 清单标头提供所有 jar。geronimo-stax-api_1.0_spec-1.0.1.jar 和 wstx-asl-3.2.4.jar 都是在 Class-Path 上定义的。StAX api(来自 geronimo-stax-api_1.0_spec-1.0.1.jar)正在尝试使用 com.ctc.wstx.stax.WstxInputFactory(来自 wstx-asl-3.2.4.jar)。我得到 Classloader 找不到类。这似乎是一个类加载器问题,但我找不到任何问题。奇怪的是,如果我将 wstx-asl-3.2.4.jar 放在我的系统类路径中,它将被定位。但是 Sun/Oracle 的 jar 规范表明 Class-Path 和系统类路径功能相同,使用相同的系统类加载器。顺便说一句,如您所见,有些罐子是 osgi 捆绑包,我不确定这会导致任何问题。

堆栈跟踪如下所示:

javax.xml.stream.FactoryConfigurationError: Requested factory com.ctc.wstx.stax.WstxInputFactory cannot be located.  Classloader =java.net.URLClassLoader@341960
    at javax.xml.stream.FactoryLocator.loadFactory(FactoryLocator.java:120)
    at javax.xml.stream.FactoryLocator.locate(FactoryLocator.java:109)
    at javax.xml.stream.FactoryLocator.locate(FactoryLocator.java:54)
    at javax.xml.stream.XMLInputFactory.newInstance(XMLInputFactory.java:41)
    at org.apache.axiom.om.util.StAXUtils$7.run(StAXUtils.java:311)
    at java.security.AccessController.doPrivileged(Native Method)
    at org.apache.axiom.om.util.StAXUtils.getXMLInputFactory_perClassLoader(StAXUtils.java:306)
    at org.apache.axiom.om.util.StAXUtils.getXMLInputFactory(StAXUtils.java:76)
    at org.apache.axiom.om.util.StAXUtils.createXMLStreamReader(StAXUtils.java:131)
    at org.apache.axis2.util.XMLUtils.toOM(XMLUtils.java:596)
    at org.apache.axis2.util.XMLUtils.toOM(XMLUtils.java:581)
    at org.apache.axis2.deployment.DescriptionBuilder.buildOM(DescriptionBuilder.java:97)
    at org.apache.axis2.deployment.AxisConfigBuilder.populateConfig(AxisConfigBuilder.java:86)
    at org.apache.axis2.deployment.DeploymentEngine.populateAxisConfiguration(DeploymentEngine.java:641)
    at org.apache.axis2.deployment.FileSystemConfigurator.getAxisConfiguration(FileSystemConfigurator.java:116)
    at org.apache.axis2.context.ConfigurationContextFactory.createConfigurationContext(ConfigurationContextFactory.java:68)
    at org.apache.axis2.context.ConfigurationContextFactory.createConfigurationContextFromFileSystem(ConfigurationContextFactory.java:184)
    at org.apache.axis2.client.ServiceClient.configureServiceClient(ServiceClient.java:150)
    at org.apache.axis2.client.ServiceClient.<init>(ServiceClient.java:143)
    at org.apache.axis2.client.ServiceClient.<init>(ServiceClient.java:244)
4

0 回答 0