Ошибка компиляции Eclipse: иерархия типа "Имя класса" несовместима

Я загрузил некоторое программное обеспечение с открытым исходным кодом, написанное на Java, и попытался скомпилировать его с помощью Eclipse. Я получил ошибку: " В некоторых файлах иерархия типа" Имя класса "несовместима. Что вызывает эти ошибки и как их исправить?

Ответ 1

Это означает, что вы пытаетесь реализовать несуществующий интерфейс или расширяете несуществующий класс.

Попробуйте обновить Eclipse.

Если это не сработает, это может означать, что у вас есть ссылка на JAR, который не находится в пути сборки. Проверьте свой путь к классу проекта и убедитесь, что в нем находится контейнер, содержащий интерфейс или класс.

Ответ 2

Иногда это случается, когда вы добавляете банку, которая вам нужна, но не включайте банки, которые нужны ИТ-специалистам. В моем случае добавление всех банок в tomcat/lib помогло мне решить эту проблему. Я работаю над веб-приложением.

Ответ 3

Проверьте свои ошибки (вкладки "маркеры" ). У меня также была следующая ошибка:

Архив для требуемой библиотеки в проекте не может быть прочитан...

и когда это было исправлено, исчезла "непоследовательная ошибка".

На самом деле я добавил банки в путь сборки, но по какой-то причине они не могли быть прочитаны с ошибкой

Архив для требуемой библиотеки в проекте не может быть прочитан или не является допустимым ZIP-архивом

Поэтому вместо этого я добавил их как "Внешние банки". Это помогло, и все проблемы компиляции уже не были!

Ответ 4

Вы должны очистить проект или перезапустить Eclipse.

Ответ 5

У меня была эта проблема после того, как я обновил JDK до новой версии. Мне пришлось обновить ссылки на библиотеки в Project Properties/Java Build Path.

Ответ 6

Еще один случай, который у меня был. Дайте правильный путь к проекту и импортируйте его в eclipse.

Затем перейдите в Project → Clean → Очистить все проекты.

Ответ 7

Вы увидите эту ошибку в случае, если какой-либо класс в вашем файле библиотеки, который у вас есть в пути к классам, ссылается на несуществующие классы (классы), которые могут быть в другом файле jar. Здесь я получил эту ошибку, когда я не добавил org.springframework.beans-3.1.2.RELEASE.jar и расширил класс из org.springframework.jdbc.core.support.JdbcDaoSupport, который был в org.springframework.jdbc-3.1.2.RELEASE.jar моего пути к классам.

Ответ 8

Проблема может заключаться в том, что вы включили неправильные банки. У меня была та же проблема, и причина заключалась в том, что я включил неправильную библиотеку JRE по умолчанию в путь сборки проекта. Я установил Java с другой версией и включил JRE файлы Java с другой версией. (Я установил JRE 1.6 в своей системе и имел библиотеку JRE 1.7, включенную в путь сборки из-за ранее установленной Java) Возможно, вы можете проверить, есть ли библиотека JRE, которую вы включили в путь сборки, правильной версии, т.е. версии Java, установленной в вашей системе.

Ответ 9

Я испытал эту проблему на Eclipse Juno, основной причиной было то, что хотя некоторые флагов spring включались в переходные зависимости maven, они были включены в неправильные версии.

Итак, вы должны проверить, использует ли модульная структура как spring, что каждый модуль (или, по крайней мере, самый важный: core, beans, context, aop, tx и т.д.) находятся в одной и той же версии.

Чтобы решить проблему, я использовал исключения maven dependnecy, чтобы избежать неправильной версии переходных зависимостей.

Ответ 10

Для меня проблема была связана с неправильным импортом. Фактически, необходимо обновить импорт после добавления библиотеки поддержки v7.

Его можно исправить следующим образом, для каждого класса вашего проекта:

  • Удалите все строки с import android.[*], в каждом классе
  • Реорганизовать импорт: в контекстном меню выберите "Источник/организовать импорт" или (CTRL + SHIFT + O)
  • При появлении запроса выберите библиотеки android.support.[*] (а не android.[*]).

Ответ 11

Это было определенно потому, что отсутствовали зависимости, которые не были в моем maven pom.xml.

Например, я хотел создать интеграционные тесты для моей реализации демонстрационного сайта с широкой линией электронной коммерции.

Я включил широкоформатную банку с интеграционными тестами из широкоформатной торговли, чтобы повторно использовать их файлы конфигурации и базовые классы тестирования. У этого проекта были другие зависимости тестирования, которые я не включил, и я получил ошибку "непоследовательной иерархии".

После копирования "тестовых зависимостей" из файла wideleaf/pom.xml и связанных свойств, которые предоставили версии для каждой зависимости в файле wideleaf/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>

Ответ 12

Если расширенный класс имеет проблему, появится следующее сообщение об ошибке.

Пример

class Example extends Example1 {

}

исправить проблемы в Example1

Ответ 13

В моем случае ссылки на импорт во многих классах содержали дополнительное слово. Я решил это, отредактировав все файлы, чтобы иметь правильный импорт. Я начал делать изменения вручную. Но когда я увидел шаблон, я автоматизировал его с помощью find.replace in eclipse. Это устранило ошибку.

Ответ 14

Ошибка: иерархия типа "имя класса" является несогласованной ошибкой.

: class OtherDepJar {} → находится внутри "other.dep.jar" .

class DepJar extends OtherDepJar {} → находится внутри "dep.jar" .

класс ProblematicClass расширяет DepJar {} → внутри текущего проекта.

Если dep.jar находится в пути к классу проекта, но other.dep.jar не находится в пути к пути проекта, Eclipse покажет "Иерархия типа... является непоследовательной ошибкой"

Ответ 15

Для меня это изменило уровень API Android на один с API Google.

Ответ 16

У меня тоже была эта проблема... Я узнал, что иерархия класса, который выбрасывает это исключение, не может быть прослежена во весь путь до своего корневого класса 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", все вернулось к норме...

Ответ 17

У меня был класс, который расширяет LabelProvider в проекте с OSGi, там произошла ошибка. Решением было следующее: добавление org.eclipse.jface к необходимым плагинам в manifest.mf вместо импорта отдельных пакетов, таких как org.eclipse.jface.viewers

Ответ 18

У меня был тот же самый точный маркер проблемы и решил его, удалив аннотацию @Override из метода, который на самом деле был первой реализацией ( "супер" - абстрактным), а не переопределением.

Ответ 19

если вы импортируете проект eclipse просто 1. Перейдите к настройке пути построения java в свойствах проекта. 2. В случае, если в библиотеке JRE System добавлен знак ошибки, дважды щелкните ее, чтобы открыть окно "Редактировать библиотеку" 3. Измените среду исполнения на правильную версию системы Java или выберите другие настройки, установив соответствующие переключатели. 4. Нажмите "Готово"

Ответ 20

При импорте проекта GWT в Eclipse без установки "Плагина Google для Eclipse" это произойдет. После установки "Google Plugin для Eclipse" эта ошибка исчезнет.

Ответ 21

Щелкните правой кнопкой мыши папку проекта и выберите "Java Build Path". Под "Java Build Path" вы должны видеть библиотеки. Eclipse покажет ошибки в любой из этих библиотек. Исправление этой проблемы поможет решить проблему.

Ответ 22

У меня была эта ошибка после некоторого git merge из ветки, где мои классы расширили новый интерфейс. Достаточно было обновить (F5) файловое дерево во фрейме Package Explorer Eclipse.

Кажется, что Eclipse не обновил все должным образом, и поэтому классы расширяли интерфейс, который еще не существовал. После обновления все ошибки исчезли.