6

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

我必须在其他地方添加这个包吗?

谢谢!

4

13 回答 13

36

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

于 2012-08-29T14:09:54.097 回答
7

转到项目资源管理器。

  1. 右键单击您的项目
  2. 构建路径
  3. 配置构建路径
  4. 删除 JRE 系统库
  5. 点击添加库
  6. 添加 JRE 系统库
  7. 单击下一步然后完成

错误将得到解决。

于 2015-04-25T11:18:33.927 回答
5

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

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

于 2012-08-29T14:09:23.253 回答
3

我在我的 RCP 应用程序之一中遇到了这个问题。

原因:我没有org.eclipse.core.runtime在 Manifest 文件的依赖部分添加核心插件。当我添加此依赖项 jar 问题已解决。

谢谢, 席德

于 2016-02-14T06:25:47.570 回答
2

这意味着您实现的类引用了接口或类,该接口或类再次引用了其他库中的一些其他类或接口,而这些类或接口不可用。

于 2012-08-29T14:11:25.110 回答
1

springframework.aop jar 取决于 aopalliance.jar 将其添加到您的类路径中,它将解决您的问题,希望它可以工作,因为我面临同样的问题,我添加了依赖 jar,所以它解决了

于 2013-11-27T05:47:51.557 回答
0
right click your project ,Properties- java build path- source- include all the cs file source(it may inherit the files) and sync.

这对我有用并且正确。

于 2013-07-17T04:41:08.107 回答
0

当我尝试在另一个插件项目中使用某个类时,我也遇到了这个问题。我有类似 myClass extends pp1Class 之类的东西 - 在这里我遇到了错误,pp1Class 插件被添加为依赖项。pp1Class 扩展 pp2Class - 这是 pp1(插件 proj1)中的依赖项,但不是我的插件。我所做的是转到 pp1 并在其中定义了对 pp2 的依赖项,单击属性并检查“重新导出此依赖项”(这是在 MANIFEST.MF 中)。这应该可以解决问题,它解决了我的问题。

于 2014-03-20T15:39:46.733 回答
0

此错误的另一个原因是,您的一个基类实现了一个位于外部库中的接口,并且您的 .classpath 文件保存在源代码控制系统上(因此是只读的)。

例如,您的 ClassB 扩展了 ClassA,而 ClassA 实现了 LibraryA.jar 中的 InterfaceA。ClassA 在 ProjectA 中,ClassB 在 ProjectB 中。ProjectA .classpath 文件是只读的。

在这里,您必须从 ProjectA 中导出 LibraryA.jar。但我猜由于 Eclipse 错误,当一个新的队友连接这些项目时(或者偶尔当你准备另一个工作区时),他会得到这种类型层次结构错误。解决此问题的唯一方法是检出 ProjectA 中的 .classpath 文件,删除并重新添加一个库(不必是 LibraryA.jar)。此操作以某种方式解决了错误。

于 2014-11-12T11:57:05.570 回答
0

在Eclipse、OSGi环境下,可以将需要的包添加到MANIFEST.MF->Dependencies选项卡->Imported packages。这将解决问题。或者包含该类的插件可以添加到Required Plugin-ins

于 2015-11-24T14:41:51.083 回答
0

我实际上在构建路径中添加了所有相关的 jar 和接口,但我仍然面临错误,所以后来有人建议我在构建路径中添加 j2ee.jar,我的错误就消失了。

于 2019-07-19T07:43:55.073 回答
0

我在maven使用Eclipse oxygen.1aIDE 的项目中也遇到了这个问题,

MyClassName 类型的层次结构不一致

在类名级别显示错误,

此后,我从存储库中获取了完整的 svn 更新,之后Maven -> Update Project又进行了更新Project Refresh

错误消失了...

据我了解,这是由于非托管项目版本而发生的。

于 2018-06-12T13:12:26.280 回答
-1

A型的层次结构不一致

上述错误主要是因为类路径中缺少一些 jars 例如:我试图实现一个接口“MethodBeforeAdvice”

这里 MethodBeforeAdvice 实现了 BeforeAdvice,这两个接口存在于一个名为“Spring-aop-4.2.5.Release.jar”的 jar 文件中

但是“BeforeAdvice”接口实现了一个接口“Advice”,该接口存在于我的类路径中不存在的其他一些 jar“aop-alliance-1.0.0.jar”中

于 2018-04-13T02:42:35.690 回答