类型Class的层次结构不一致

时间:2012-08-29 14:06:58

标签: java abstract-class

我有一个实现抽象类的类。抽象类在我的项目的另一个包中。通过配置构建路径/项目添加了类是抽象的包。在实现的类中指责以下错误:类型类的层次结构不一致

我是否要在其他地方添加此软件包?

谢谢!

13 个答案:

答案 0 :(得分:34)

发生这些错误是因为无法解析层次结构中的某些接口/类。 例如:错误在您的类中 - 类X,X继承Y,反过来,Y继承Z.但是,编译器无法解析z(在上面的错误中),因为z属于未包含的库。 因此,您必须将包含z的包添加到类路径/或项目的Java构建路径(如果您使用的是eclipse)。 希望它可能会有所帮助。

答案 1 :(得分:5)

这意味着您在超级类中进行了不兼容的更改,但尚未重新编译它。

我建议您使用Maven或Ant等构建系统和/或使用IDE构建所有代码。

答案 2 :(得分:4)

转到Project Explorer。

  1. 右键单击您的项目
  2. 构建路径
  3. 配置构建路径
  4. 删除JRE系统库
  5. 点击添加图书馆
  6. 添加JRE系统库
  7. 单击“下一步”,然后单击“完成”
  8. 错误将得到解决。

答案 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”中