所以我试图在Eclipse项目的一个模块中使用org.apache.cxf.binding.soap.interceptor.SoapHeaderInterceptor。
由于这是我正在添加的新jar,我最初自己下载了它,然后将其添加为项目下的引用库。一切都很好。我让我的类扩展了SoapHeaderInterceptor,而且所有东西都是hunky dory。
所以,一旦我完成了所有的编码,我从引用的库中删除了jar,然后将它添加到我的模块的pom中,如下所示:
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-bindings-soap</artifactId>
<version>2.5.2</version>
</dependency>
我对该项目进行了Maven更新,随后在Maven依赖项下添加了jar。我甚至打开了我当地的m2存储库,它也在那里。
但我现在在课上遇到错误(如下所示)
public class AuthenticationInterceptor extends SoapHeaderInterceptor
如下:
项目未构建,因为其构建路径不完整。不能 找到类文件 org.apache.cxf.interceptor.AbstractInDatabindingInterceptor。修复 构建路径然后尝试构建此项目
类型org.apache.cxf.interceptor.AbstractInDatabindingInterceptor 无法解决。它是从必需的.class中间接引用的 文件AuthenticationInterceptor.java
AuthenticationInterceptor类型的层次结构不一致
注意:SoapHeaderInterceptor扩展了AbstractInDatabindingInterceptor。
我花了好几个小时试图搞清楚这一点,我绝对难过。我多次清理/构建我的工作区。我添加依赖项的模块实际上已经有了几个以前的依赖项,所以它不像是没有为Maven配置的。我看到导入包的行没有错误,所以显然它是在某处找到jar(构建路径或m2 repo)。我正在使用jar的2.5.2版本,并且我知道有人以完全相同的方式使用此jar用于完全相同的目的,成功。
我唯一可以想到的可能是一个问题(有人会证实吗?)是我的本地m2 repo有这个jar的多个版本,一个更旧,两个更新。这会引起某种冲突吗?
编辑:在进一步检查时,我看到org.apache.cxf.interceptor.AbstractInDatabindingInterceptor实际上并不在我的仓库中的任何地方。我在cxf-api-2.5.2.jar中有cxf.interceptor包但它没有这个类。有解决方案吗我是否必须使用不同版本的jar?
答案 0 :(得分:1)
如果在Eclipse中打开POM并选择&#34; Dependency Hierarchy&#34;你应该能够看到另一个(直接)依赖是否干扰或省略了你需要的jar文件。
我只是试图用这个POM回溯你的步骤:
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.example</groupId>
<artifactId>art1</artifactId>
<version>0.0.1-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-bindings-soap</artifactId>
<version>2.5.2</version>
</dependency>
</dependencies>
</project>
并创建了一个类:
package art1;
import org.apache.cxf.binding.soap.interceptor.SoapHeaderInterceptor;
public class MyClass extends SoapHeaderInterceptor {
}
它编译得很好。
此外,类org.apache.cxf.binding.soap.interceptor.AbstractInDatabindingInterceptor
与SoapHeaderInterceptor
存在于同一个jar和包中,因此您的环境中似乎还有其他内容。
我的依赖关系层次结构如下所示:
从相同的依赖关系开始,你的看起来一样吗?
答案 1 :(得分:0)
即使2.5.2被添加到maven依赖项中,我也经历了包结构,发现AbstractInDatabindingInterceptor类实际上并不存在于拦截器包中。我更新到两个罐子的更高版本(绑定为2.7.6,api为2.7.2),一切顺利。