我下载了一些用 Java 编写的开源软件,并试图用 Eclipse 编译它。 我得到了错误: “ “类名”类型的层次结构不一致”在一些文件中。 是什么导致了这些错误以及如何修复它们?
这意味着您正在尝试实现一个不存在的接口,或者您正在扩展一个不存在的类。
尝试刷新您的 Eclipse。
如果它不工作,这可能意味着您有一个对不在构建路径中的 JAR 的引用。 检查项目的类路径并验证包含接口或类的 jar 是否在其中。
检查您的错误(选项卡“标记”)。我还有以下错误:
无法读取项目中所需库的存档..。
当这个问题解决后,“不一致性错误”就消失了。
实际上,我已经在构建路径中添加了 jar,但是由于某些原因,它们不能被错误地读取
无法读取项目中所需库的归档文件或归档文件不是有效的 ZIP 文件
因此,我将它们添加为“外部罐子”。这有所帮助,所有的编译问题都不复存在了!
如果类路径中的库文件中的某个类引用了可能位于另一个 jar 文件中的不存在的类,那么您将看到这个错误。在这里,我收到了这个错误,当我没有添加 org.springframework.beans-3.1.2.RELEASE.jar,并从 org.springframework.jdbc.core.support.JdbcDaoSupport扩展了一个类,这是在我的类路径的 org.springframework.jdbc-3.1.2.RELEASE.jar。
org.springframework.beans-3.1.2.RELEASE.jar
org.springframework.jdbc.core.support.JdbcDaoSupport
org.springframework.jdbc-3.1.2.RELEASE.jar
有时候,当你添加一个你需要的罐子,但是不包括它所需要的罐子时,就会发生这种情况。在我的例子中,添加 tomcat/lib 中的所有罐子帮助我解决了这个问题。我正在开发一个网络应用程序。
问题可能是您包含了不正确的罐子。我也有同样的问题,原因是我在项目的构建路径中包含了不正确的默认 JRE 库。我用另一个版本安装了 Java,并且用另一个版本包含了 Java 的 JRE 文件。(我已经在我的系统中安装了 JRE 1.6,并且由于之前安装了 Java,所以在构建路径中包含了 JRE 库1.7)也许你可以检查你在构建路径中包含的 JRE 库是否是正确的版本即。你已安装在你的系统的 Java 版本。
我在 Eclipse Juno 上遇到过这个问题,其根本原因是,尽管一些 Spring jar 被临时的 maven 依赖包括在内,但它们被包含在不正确的版本中。
因此,您应该检查是否使用模块化框架作为弹簧,每个模块(或者至少是最重要的: core、 bean、 context、 aop、 tx 等)都在相同的版本中。
为了解决这个问题,我使用了 Maven 依赖性排除来避免不正确的暂时依赖性版本。
在将 JDK 升级到新版本后,我遇到了这个问题。我必须更新 ProjectProperties/JavaBuild Path 中对库的引用。
我还有一个案例。给出正确的项目路径,并将其导入到 eclipse。
然后转到 Project —— > Clean —— > Clean all Project。
对我来说,这是将 Android API 级别改为 Google API 级别
对我来说,这个问题是由于错误的进口。事实上,在添加了 v7支持库之后,需要更新导入。
它可以通过如下操作来修复,对于您的项目的每个类:
import android.[*]
android.support.[*]
android.[*]
我也有这个问题... ... 我发现抛出这个异常的类的层次结构,不能通过 eclipse 一路追溯到它的根类... ... 我解释:
在我的例子中,我有3个 java 项目: A、 B 和 C。.其中 A 和 B 是 Maven 项目 C 是一个常规的 java Eclipse 项目..。
在项目 A 中,我有接口“ interfaceA”..。 在项目 B 中,我的接口“ interfaceB”扩展了“ interfaceA” 在项目 C 中,我有一个具体的类“ classC”,它实现了“ interfaceB”
“项目 C”在其构建路径中包含了“项目 B”,但没有包含“项目 A”(这就是错误的原因) ... ..。在将“项目 A”包含在“ C”的构建路径中之后,一切恢复正常..。
这肯定是因为我的 maven pom.xml 中没有缺少依赖项。
例如,我想为我的宽叶电子商务演示站点的实现创建集成测试。
为了重用它们的配置文件和基本测试类,我已经包含了一个阔叶 jar,其中包含了来自阔叶商业的集成测试。该项目还有其他测试依赖项,我没有包括在内,我收到了“不一致的层次结构”错误。
将“测试依赖项”从 Broadleaf/pom.xml 和相关的属性变量复制到 Broadleaf/pom.xml 中,这些属性变量为每个依赖项提供了版本,然后错误就消失了。
物业包括:
<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 的类,在那里发生了错误。解决方案是: 在 Manif.mf 中将 org.eclipse.jface 添加到所需的插件中,而不是导入像 org.eclipse.jface.viewers 这样的单个包
如果扩展类有问题,那么将显示上面的错误消息。
例子
class Example extends Example1 { }
解决 Example1中的问题
Example1
您应该清理项目,或者重新启动 Eclipse。
我有一个完全相同的问题标记,并通过从实际上是第一个实现(“ super”是一个抽象方法)而不是重写的方法中删除@Override 注释来解决这个问题。
在我的例子中,许多类中的导入引用都包含一个额外的单词。我通过编辑所有文件以获得正确的导入来解决这个问题。我开始手动编辑。但是当我看到这个模式时,我用一个发现自动化了它。.在日食中替换。这解决了错误。
如果您只是导入 Eclipse 项目 1. 转到项目属性下的 java 构建路径设置。 2.如果 JRE 系统库有一个错误标志附加到它双击它打开编辑库窗口 3.将执行环境更改为系统的正确 Java 版本,或者通过检查分配给它们的单选按钮来选择编辑其他设置。 点击完成
错误: “ class name”类型的层次结构是不一致的错误。
解决方案: 类 其他 DepJar{}—— > 在 “ other. dep.jar”中。
类 德加扩展 其他 DepJar{}—— > 在 Dep.jar内部。
类问题类扩展 DepJar {}—— > 在当前项目中。
如果 dep.jar 在项目的类路径中,而 other. dep.jar 不在项目的类路径中,Eclipse 将显示“类型的层次结构... 是不一致的错误”
当在 Eclipse 中导入 GWT 项目而不安装“ GooglePluginforEclipse”时,就会发生这种情况。安装“ GooglePluginforEclipse”后,此错误将消失。
右键单击项目文件夹并选择“ JavaBuildPath”。在“ JavaBuildPath”下,您应该能够看到库。Eclipse 将在这些库中显示错误。解决这些问题将有助于解决这个问题。
在我的类扩展了一个新接口的分支中执行了一些 Git 合并操作之后,我出现了这个错误。 在 Eclipse 的 软件包浏览器帧中使用文件树 刷新(F5)就足够了。
Eclipse 似乎没有正确地更新所有内容,因此这些类正在扩展一个尚未存在的接口。刷新后,所有错误消失。
我不得不从我从 IBM 得到的 Eclipse ox 转向使用 IBM JDK 8到 Eclipse Photon 和 Oracle JDK 8。我正在为 Maximo进行 Java 定制。