我有一个实现抽象类的类。抽象类在我的项目的另一个包中。通过配置构建路径/项目添加了类是抽象的包。在实现的类中指责以下错误:类型类的层次结构不一致
我是否要在其他地方添加此软件包?
谢谢!
答案 0 :(得分:34)
发生这些错误是因为无法解析层次结构中的某些接口/类。 例如:错误在您的类中 - 类X,X继承Y,反过来,Y继承Z.但是,编译器无法解析z(在上面的错误中),因为z属于未包含的库。 因此,您必须将包含z的包添加到类路径/或项目的Java构建路径(如果您使用的是eclipse)。 希望它可能会有所帮助。
答案 1 :(得分:5)
这意味着您在超级类中进行了不兼容的更改,但尚未重新编译它。
我建议您使用Maven或Ant等构建系统和/或使用IDE构建所有代码。
答案 2 :(得分:4)
转到Project Explorer。
错误将得到解决。
答案 3 :(得分:2)
我在一个My RCP应用程序中遇到了这个问题。
原因:我没有在Manifest文件的依赖部分添加核心插件 org.eclipse.core.runtime
。
当我添加此依赖jar时,问题已得到解决。
谢谢, SID
答案 4 :(得分:1)
这意味着由您实现的类引用了接口或类,它再次引用其他库中的其他类或接口,并且这些类或接口不可用。
答案 5 :(得分:1)
springframework.aop jar取决于aopalliance.jar将它添加到你的类路径它会解决你的问题希望它的工作原理cos我面临同样的问题我添加了依赖jar所以它解决了
答案 6 :(得分:0)
right click your project ,Properties- java build path- source- include all the cs file source(it may inherit the files) and sync.
这对我来说非常有用。
答案 7 :(得分:0)
当尝试在另一个插件项目中使用某个类时,我也遇到了这个问题。 我有像myClass扩展pp1Class的东西 - 这里我有错误,pp1Class插件被添加为依赖。 pp1Class扩展了pp2Class - 这是pp1(插件proj1)中的依赖,但不是在我的插件中。我做的是转到pp1,你已经将依赖关系定义为pp2,点击属性并检查"再出口这个依赖关系" (这是在MANIFEST.MF中)。 这应该解决问题,它解决了我的问题。
答案 8 :(得分:0)
此错误的另一个原因是,您的一个基类实现了一个位于外部库中的接口,而您的.classpath文件保存在源控制系统上(因此只读)。
例如,您的ClassB扩展了ClassA,而ClassA实现了LibraryA.jar中的InterfaceA。 ClassA在ProjectA中,ClassB在ProjectB中。 ProjectA .classpath文件是只读的。
您必须从ProjectA导出LibraryA.jar。但我想由于Eclipse的错误,当一个新的队友连接这些项目时(或偶尔在你准备另一个工作区时),他会得到这种类型的层次结构错误。解决此问题的唯一方法是在ProjectA中签出.classpath文件,删除并重新添加库(不必是LibraryA.jar)。此操作以某种方式解决了错误。
答案 9 :(得分:0)
在Eclipse,OSGi环境中,可以将所需的包添加到MANIFEST.MF->依赖选项卡 - >导入的包。这将解决问题。或者包含该类的插件可以添加到Required Plugin-ins
答案 10 :(得分:0)
我在使用maven
IDE,
Eclipse oxygen.1a
项目中也遇到了这个问题
MyClassName类型的层次结构不一致
在班级名称上显示错误,
此后我从存储库和后来的Maven -> Update Project
以及之后的Project Refresh
中获取了完整的svn更新。
错误消失了......
根据我的理解,这是由于非托管项目版本而发生的。
答案 11 :(得分:0)
我实际上在构建路径中添加了所有相关的jar和接口,但仍然遇到错误,因此后来有人建议我在构建路径中添加j2ee.jar,而我的错误就消失了。
答案 12 :(得分:-1)
类型A的层次结构不一致
以上错误主要是因为类路径中缺少一些jar 例如:我试图实现一个接口“MethodBeforeAdvice”
这里MethodBeforeAdvice实现BeforeAdvice,这两个接口存在于一个名为“Spring-aop-4.2.5.Release.jar”的jar文件中
但是“BeforeAdvice”接口实现了一个接口“Advice”,它存在于我的类路径中不存在的其他jar“aop-alliance-1.0.0.jar”中