apache soap soap客户端常见日志记录jar冲突
我在尝试使用axis调用SOAP webservice时收到此异常。基本上我写了一个轴客户端。apache soap soap客户端常见日志记录jar冲突
org.apache.commons.discovery.DiscoveryException: Class org.apache.commons.logging.impl.SLF4JLogFactory does not implement org.apache.commons.logging.LogFactory.
当我删除了所有常见的日志记录罐子,我就能够消除这些错误,但这些罐是从其他的API来了,我没有对他们的控制。
有什么办法可以解决这个问题吗?
对commons logging documentation中有什么问题可能会有详细的解释和调试方法。您的具体问题而定,
也有另一种更不寻常的方式在这个转换可能失败: 即使二进制兼容,在 运行时加载的实现类可以链接到的不同实例LogFactory类。 欲了解更多信息,请参阅tech guide。
链接到上述Documentation节“修复”建议包括
-Dorg.apache.commons.logging.LogFactory=org.apache.commons.logging.impl.LogFactoryImpl
在您的设置
。 对某些人来说可能更容易有此代码来代替:
static
{
System.setProperty(LogFactory.FACTORY_PROPERTY, LogFactory.FACTORY_DEFAULT);
}
这个解决方案中没有为我工作。我弄清楚我的溶液SLF4J文档中
http://slf4j.org/faq.html#excludingJCL
备选2)提供范围共享记录可以是相当简单且 由POM内所提供的 范围声明它方便地排除作为依赖。您项目的xml文件。实际的 commons-logging类将由jcl-over-slf4j提供。这 转换成以下POM文件片段:
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.1.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
<version>1.7.21</version>
</dependency>
第一依赖声明主要指出 共享记录将是“莫名其妙”的环境中提供。 第二个声明将jcl-over-slf4j包含到您的项目中。由于 jcl-over-slf4j是 commons-logging的完美二进制兼容替代品,因此第一个断言将变为true。不幸的是, 在声明所提供范围内的公用日志记录完成作业 时,您的IDE(例如, Eclipse仍然会将IDE的commons-logging.jar放置在项目的类路径中。你需要确定在你的IDE之前jcl-over-slf4j.jar在commons-logging.jar之前可见 。
SLF4J文档给出了更多的选择,这对我很有用。
可能最好的解决方案如下。但是如果你使用的是Maven项目,那么你可以通过排除来删除commons-logging。轴 轴 1.4 \t \t \t \t 共享记录 \t \t \t 共享记录 –
Purushothaman
2017-05-09 12:09:35