3

我正在为 nexus oss 编写一个插件。我在哪里使用轴进行网络服务调用。它抛出一个

InvocationTargetException:目标:java.lang.NoClassDefFoundError:无法初始化类 org.apache.axis.client.AxisClient

所以如果nexus在抛出这个NoClassDefFoundError时找不到我的轴罐,我会很担心。所以我开始一步一步地调试,检查nexus是否知道我的axis jar,在调试时我发现控件进入了axis jar(所以我假设nexus没有看到axis jar是错误的)。它在轴上进入Service.java,代码就像

protected AxisClient getAxisClient() {
    return new AxisClient(getEngineConfiguration());
}

/**
 * Constructs a new Service object - this assumes the caller will set
 * the appropriate fields by hand rather than getting them from the
 * WSDL.
 */
public Service() {
    engine = getAxisClient();
}

它在 line engine = getAxisClient(); 处抛出此异常;这实际上是在行 return new AxisClient(getEngineConfiguration()); 在 getAxisClient 方法中。因此,如果它可以找到位于 axis.jar 中的 service.java ,那么它就没有任何理由找不到位于轴 jar 中的同一包中的 AxisClient 类。

所以你能帮我找出这个例外的原因吗?

我的轴罐不是由 nexus 获取的吗?如何查找 jar 是否由 nexus 获取?

4

1 回答 1

6

我的老板帮我找到了答案。

这实际上是 commons-logging 的问题。我在我的nexus 中加载了一个commons-logging。在码头服务器中运行的nexus 本身有一个commons-logging,所以发生了冲突。现在我从插件描述符中删除了我的公共日志记录。然后问题结束了,我的插件开始工作了。

谢谢 。

于 2013-09-02T05:54:12.617 回答