Я загрузил программное обеспечение с открытым исходным кодом, написанное на Java, и попытался скомпилировать его с помощью Eclipse. Я получил ошибку: « Иерархия типа« Имя класса »несовместима » в некоторых файлах. Что вызывает эти ошибки и как их исправить?
142
Maven
>Download Source
на рассматриваемой зависимости.Иногда это происходит, когда вы добавляете банку, которая вам нужна, но не включаете в нее нужные ЕМУ. В моем случае добавление всех банок в tomcat / lib помогло мне решить эту проблему. Я работаю над веб-приложением.
источник
Проверьте свои ошибки (вкладка «маркеры»). У меня также была следующая ошибка:
и когда это было исправлено, "несовместимая ошибка" исчезла.
На самом деле я добавил jar-файлы в путь сборки, но по какой-то причине их нельзя было прочитать с ошибкой
Поэтому вместо этого я добавил их как «Внешние банки». Это помогло, и проблем с компиляцией больше не было!
источник
У меня возникла эта проблема после того, как я обновил JDK до новой версии. Мне пришлось обновить ссылки на библиотеки в Project Properties / Java Build Path.
источник
Еще один случай у меня был. Укажите правильный путь к проекту и импортируйте его в eclipse.
Затем перейдите в Проект -> Очистить -> Очистить все проекты.
источник
Вы должны очистить проект или перезапустить Eclipse.
источник
Вы увидите эту ошибку, если какой-либо класс в вашем библиотечном файле, который у вас есть в пути к классам, имеет ссылку на несуществующие классы, которые могут быть в другом файле jar. Здесь я получил эту ошибку, когда не добавил
org.springframework.beans-3.1.2.RELEASE.jar
и расширил класс изorg.springframework.jdbc.core.support.JdbcDaoSupport
, который был вorg.springframework.jdbc-3.1.2.RELEASE.jar
моем пути к классам.источник
Проблема может заключаться в том, что вы включили неправильные банки. У меня была та же проблема, и причина заключалась в том, что я включил неправильную библиотеку JRE по умолчанию в путь сборки проекта. Я установил Java с другой версией и включал файлы JRE Java с другой версией. (Я установил JRE 1.6 в свою систему, и у меня была библиотека JRE 1.7, включенная в путь сборки из-за ранее установленной Java) Возможно, вы можете проверить, имеет ли библиотека JRE, которую вы включили в путь сборки, правильную версию, т.е. версии Java, установленной в вашей системе.
источник
Я столкнулся с этой проблемой в Eclipse Juno, основная причина заключалась в том, что, хотя некоторые jar-файлы Spring включались временными зависимостями maven, они были включены в неправильные версии.
Поэтому вы должны проверить, используете ли модульный фреймворк в качестве пружины, что все модули (или, по крайней мере, наиболее важные: core, beans, context, aop, tx и т. Д.) Находятся в одной версии.
Чтобы решить эту проблему, я использовал исключения зависимости maven, чтобы избежать неправильной версии временных зависимостей.
источник
Ошибка: иерархия типа «имя класса» является несовместимой ошибкой.
решение: класс OtherDepJar {} -> находится внутри "other.dep.jar" .
class DepJar extends OtherDepJar {} -> находится внутри "dep.jar" .
class ProblematicClass extends DepJar {} -> находится внутри текущего проекта.
Если dep.jar находится в пути к классам проекта, но other.dep.jar отсутствует в пути к классам проекта, Eclipse покажет «Иерархия типа ... несовместима с ошибкой»
источник
Для меня проблема была в неправильном импорте. Фактически, необходимо обновить импорт после добавления библиотеки поддержки v7.
Это можно исправить, выполнив следующие действия для каждого класса вашего проекта :
import android.[*]
в каждом классеandroid.support.[*]
(а неandroid.[*]
).источник
Это было определенно потому, что отсутствовали зависимости, которых не было в моем maven pom.xml.
Например, я хотел создать интеграционные тесты для моей реализации демонстрационного сайта широкой электронной коммерции.
Я включил широколистную банку с интеграционными тестами из широколистной коммерции, чтобы повторно использовать их файлы конфигурации и базовые классы тестирования. В этом проекте были другие тестовые зависимости, которые я не включил, и я получил ошибку «несогласованная иерархия».
После копирования «тестовых зависимостей» из 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>
источник
Если у расширенного класса есть проблема, появится указанное выше сообщение об ошибке.
пример
class Example extends Example1 { }
исправить проблемы в
Example1
источник
У меня был такой же точный маркер проблемы, и я решил его, удалив аннотацию @Override из метода, который фактически был первой реализацией («супер» - абстрактный метод), а не переопределением.
источник
В моем случае ссылки на импорт во многих классах содержали лишнее слово. Я решил это, отредактировав все файлы, чтобы иметь правильный импорт. Я начал вносить правки вручную. Но когда я увидел шаблон, я автоматизировал его с помощью find..replace in eclipse. Это устранило ошибку.
источник
Для меня это было изменение уровня Android API на уровень с API Google.
источник
У меня тоже была эта проблема ... Я обнаружил, что иерархия класса, который генерировал это исключение, не может быть прослежена до его корневого класса с помощью 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» , все вернулось в норму ...
источник
У меня был класс, расширяющий LabelProvider в проекте с OSGi, там произошла ошибка. Решение было: добавление org.eclipse.jface к необходимым плагинам в manifest.mf вместо импорта отдельных пакетов, таких как org.eclipse.jface.viewers
источник
если вы импортируете проект eclipse, просто 1. Перейдите к настройке пути сборки java в свойствах проекта. 2. Если к системной библиотеке JRE прикреплен знак ошибки, дважды щелкните по нему, чтобы открыть окно «Редактировать библиотеку». 3. Измените среду выполнения на правильную версию Java системы или выберите «Изменить другие параметры», установив переключатель «Назначить» им. 4. Нажмите "Готово".
источник
Это произойдет при импорте проекта GWT в Eclipse без установки «Плагина Google для Eclipse». После установки «Плагина Google для Eclipse» эта ошибка исчезнет.
источник
Щелкните правой кнопкой мыши папку проекта и выберите «Путь сборки Java». В разделе «Путь сборки Java» вы должны увидеть библиотеки. Eclipse покажет ошибки в любой из этих библиотек. Устранение этой проблемы поможет решить проблему.
источник
У меня возникла эта ошибка после некоторого слияния git из ветки, где мои классы расширили новый интерфейс. Достаточно было обновить (F5) дерево файлов во фрейме Package Explorer Eclipse.
Кажется, что Eclipse не обновил все должным образом, поэтому классы расширяли еще не существующий интерфейс. После обновления все ошибки исчезли.
источник
Мне пришлось переключиться с Eclipse Oxygen, который я получил от IBM, и использовать IBM JDK 8, на Eclipse Photon и Oracle JDK 8. Я работаю над настройками Java для Максимо.
источник