Eclipse编译错误:“类名”types的层次结构不一致

我已经下载了一些用Java编写的开源软件,并尝试使用Eclipse进行编译。 我得到了错误:“ types的层次结构类名”是不一致的 “在一些文件中。 造成这些错误的原因是什么?如何解决这些错误?

这意味着你正试图实现一个不存在的接口,或者你正在扩展一个不存在的类。

尝试刷新你的E​​clipse。

如果它不起作用,这可能意味着您有一个不在构buildpath中的JAR的引用。 检查你的项目的类path,并validation包含接口或类的jar在里面。

检查你的错误(标签“标记”)。 我也有以下错误:

项目中所需库的存档无法读取…

当这个问题得到解决之后,“不一致的错误”就消失了。

其实我已经把jar添加到了构buildpath,但由于某些原因,他们无法读取错误

项目中所需库的存档不能被读取或不是有效的ZIP文件

所以相反,我把它们添加为“外部jar子”。 这有帮助,所有的编译问题都没有了!

有时会发生,当你添加一个你需要的jar,但不包括它需要的jar子。 在我的情况下,添加tomcat / lib中的所有jar子帮助我解决了这个问题。 我正在开发一个networking应用程序。

如果库文件中的某个类在classpath中有一个类引用了可能在另一个jar文件中的不存在的类,那么将会看到这个错误。 在这里,当我没有添加org.springframework.beans-3.1.2.RELEASE.jar并且从org.springframework.jdbc.core.support.JdbcDaoSupport扩展了org.springframework.jdbc-3.1.2.RELEASE.jar我的类path。

问题可能是你包括不正确的jar子。 我有同样的问题,原因是我已经在项目的构buildpath中包含不正确的默认JRE库。 我已经安装了Java与另一个版本,并包括与不同版本的Java的JRE文件。 (我已经在我的系统中安装了JRE 1.6,并且由于之前安装了Java,所以在构buildpath中包含了JRE库1.7)。可能您可以检查包含在构buildpath中的JRE库是否是正确的版本。 您在系统中安装的Java版本。

我在Eclipse Juno上遇到过这个问题,根本原因是虽然一些spring jars被临时maven依赖包括在内,但它们被包含在不正确的版本中。

所以你应该检查一下,如果使用模块化框架作为spring,每个模块(或者至less最重要的:核心,bean,上下文,aop,tx等)都是在同一个版本中。

为了解决这个问题,我使用了maven依赖关系排除来避免不正确版本的依赖关系。

在将JDK升级到新版本后,我遇到了这个问题。 我不得不更新项目属性/ Java构buildpath中对库的引用。

还有一个例子。 给出正确的项目path,并将其导入到eclipse中。

然后去项目 – >清洁 – >清理所有项目。

对我来说,这个问题是由于错误的import。 实际上,在添加v7支持库之后,需要更新导入。

对于您的项目的每个类别,可以按照以下步骤进行修复:

  1. 在每个类中删除import android.[*]所有行
  2. 重组您的导入:从上下文菜单中selectSource / Organize Imports或(CTRL + SHIFT + O)
  3. 出现提示时,select库android.support.[*] (而不是android.[*] )。

您应该清理该项目,或重新启动Eclipse。

就我而言,许​​多类中的导入引用包含一个额外的单词。 我通过编辑所有文件来解决它,以正确的导入。 我开始手动进行编辑。 但是当我看到这个模式时,我使用eclipse中的find ..replace来自动化它。 这解决了错误。

对我而言,它将Android API级别更改为使用Google API的级别

我也遇到了这个问题…我发现抛出这个exception的类的层次结构不能通过eclipse追溯到它的根类… I解释:

在我的情况下,我有3个Java项目:A,B和C …其中A和B是Maven项目和C一个常规的Java eclipse项目…

在项目A中,我有接口“interfaceA”…在项目B中,我有接口“接口B”,扩展“接口A”在项目C,我有具体的类“classC”,实现“接口B”

“项目C”在其构buildpath中包括“项目B”,而不包括“项目A”(因此是错误的原因)。在“C”构buildpath中包括“项目A”一切都恢复正常了

这绝对是因为缺less依赖,而不在我的maven pom.xml中。

例如,我想为我的broadleaf电子商务演示网站的实现创build集成testing。

为了重新使用他们的configuration文件和基础testing类,我已经在broadleaf commerce中join了一个广泛的jar集成testing。 该项目有其他testing依赖项,我没有包括,我收到“不一致的层次结构”的错误。

从broadleaf / pom.xml和为broadleaf / pom.xml中的每个依赖关系提供版本的相关属性variables复制“testing依赖关系”之后,错误消失了。

属性是:

  <geb.version>0.9.3</geb.version> <spock.version>0.7-groovy-2.0</spock.version> <selenium.version>2.42.2</selenium.version> <groovy.version>2.1.8</groovy.version> 

依赖关系是:

 <dependency> <groupId>org.broadleafcommerce</groupId> <artifactId>integration</artifactId> <type>jar</type> <classifier>tests</classifier> <scope>test</scope> </dependency> <dependency> <groupId>org.broadleafcommerce</groupId> <artifactId>broadleaf-framework</artifactId> <version>${blc.version}</version><!--$NO-MVN-MAN-VER$ --> <classifier>tests</classifier> </dependency> <dependency> <groupId>com.icegreen</groupId> <artifactId>greenmail</artifactId> <version>1.3</version> <type>jar</type> <scope>test</scope> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> <scope>test</scope> </dependency> <dependency> <groupId>org.easymock</groupId> <artifactId>easymock</artifactId> <version>2.5.1</version> <type>jar</type> <scope>test</scope> </dependency> <dependency> <groupId>org.easymock</groupId> <artifactId>easymockclassextension</artifactId> <version>2.4</version> <type>jar</type> <scope>test</scope> </dependency> <dependency> <groupId>org.testng</groupId> <artifactId>testng</artifactId> <version>5.9</version> <type>jar</type> <classifier>jdk15</classifier> <scope>test</scope> </dependency> <dependency> <groupId>org.codehaus.groovy</groupId> <artifactId>groovy-all</artifactId> <version>${groovy.version}</version> <scope>test</scope> </dependency> <dependency> <groupId>org.gebish</groupId> <artifactId>geb-core</artifactId> <version>${geb.version}</version> <scope>test</scope> </dependency> <dependency> <groupId>org.gebish</groupId> <artifactId>geb-spock</artifactId> <version>${geb.version}</version> <scope>test</scope> </dependency> <dependency> <groupId>org.spockframework</groupId> <artifactId>spock-core</artifactId> <version>${spock.version}</version> <scope>test</scope> </dependency> <dependency> <groupId>org.seleniumhq.selenium</groupId> <artifactId>selenium-support</artifactId> <version>${selenium.version}</version> <scope>test</scope> </dependency> <dependency> <groupId>org.seleniumhq.selenium</groupId> <artifactId>selenium-firefox-driver</artifactId> <version>${selenium.version}</version> <scope>test</scope> </dependency> <dependency> <groupId>org.seleniumhq.selenium</groupId> <artifactId>selenium-chrome-driver</artifactId> <version>${selenium.version}</version> <scope>test</scope> </dependency> <!-- Logging --> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.12</version> <type>jar</type> <scope>test</scope> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>1.6.1</version> <type>jar</type> <scope>test</scope> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>jcl-over-slf4j</artifactId> <version>1.6.1</version> <type>jar</type> <scope>test</scope> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.6.1</version> <type>jar</type> <scope>test</scope> </dependency> <dependency> <groupId>org.hsqldb</groupId> <artifactId>hsqldb</artifactId> <version>2.3.1</version> <type>jar</type> <scope>test</scope> </dependency> 

我有一个类使用OSGi在一个项目中扩展LabelProvider,出现错误。 解决方法是:将org.eclipse.jface添加到manifest.mf中所需的插件,而不是像org.eclipse.jface.viewers一样导入单个包

如果扩展类有问题,则会显示上述错误信息。

 class Example extends Example1 { } 

修复Example1的问题

我有相同的确切的问题标记,并通过从实际上是第一个实现的方法(“超级”是一个抽象方法),而不是一个覆盖删除@Override注解来解决它。

如果您只是导入eclipse项目,请执行以下操作:1.转至项目属性下的java构buildpath设置。 2.如果JRE系统库附有错误标志,双击它打开编辑库窗口3.将执行环境更改为正确的java版本的系统,或select编辑其他设置,方法是选中单选buttonassign给他们。 4.点击完成

错误:“类名称”types的层次结构是不一致的错误。

解决scheme:class OtherDepJar {} – >在“other.dep.jar”中

DepJar扩展OtherDepJar {} – >在“dep.jar”中

class ProblematicClass extends DepJar {} – >在当前项目中。

如果dep.jar位于项目的类path中,而other.dep.jar不在项目的类path中,则Eclipse将显示“types的层次结构…是不一致的错误”

当在Eclipse中导入GWT项目而不安装“Google Eclipse Plugin”时,会发生这种情况。 安装“Google Plugin for Eclipse”后,此错误将消失。