2009-07-14 4 views
57

Каковы возможные причины проблемы «java.lang.Error: Unresolved compilation»?Java: проблема неразрешенной компиляции

Дополнительная информация:

Я видел это после копирования набора обновленных файлов JAR из сборки поверх существующей баночки и перезапуска приложения. JARs построены с использованием процесса сборки Maven.

Я бы ожидал увидеть ошибки LinkageErrors или ClassNotFound, если интерфейсы изменились. Вышеприведенная ошибка указывает на проблему более низкого уровня.

Устранение неполадок при чистом перестроении и перераспределении. Может ли эта ошибка указывать на поврежденный JAR?

+0

Что вы сделали, чтобы вызвать эту ошибку? –

ответ

55

(переписано 2015-07-28)

поведение по умолчанию Eclipse, при компиляции кода с ошибками в нем, чтобы генерировать байт-код генерируется исключение, вы видите. Это возможно, поскольку Eclipse использует собственный встроенный компилятор вместо javac из JDK, который использует Apache Maven. Если вы используете Eclipse в проекте Maven, с которым вы также работаете с командой командной строки mvn, это может произойти.

Исцеление - исправить ошибки и перекомпилировать перед повторным запуском.

Установка помечается красным квадратом в этом screendump:

Eclipse Preferences under OS X

+0

Это не мое дело. Я видел это после развертывания JAR-файлов (с использованием Maven) на сервере. – 2009-07-15 11:10:19

+1

Возможно, проблема связана с конфигурацией сборки Maven, и она использует файлы .class из вашего выходного каталога eclipse. Во всяком случае, единственный раз, когда я видел эту ошибку, при запуске кода с ошибками компиляции в eclipse. –

+0

В этом случае ваша сборка maven, скорее всего, сломана. Попробуйте очистить и перекомпилировать из командной строки, а Eclipse отключится. –

6

Ваши скомпилированные классы, возможно, потребуется перекомпилировать от источника с новыми баночки.

Попробуйте запустить "MVN чистый", а затем восстановить

3

вы просто попытаться очистить Maven команды

mvn clean 

и после этого следующей команды

mvn eclipse:clean eclipse:eclipse 

и перестройте свой проект ....

+0

Учитывая текущее качество (2015) плагина m2e Eclipse, я бы предложил использовать Eclipse с этим, а не для различных целей eclipse maven. –

1

У меня была эта ошибка, когда я использовал конфигурацию запуска, у которой был недопустимый путь к классам. В моем случае у меня был проект, который изначально использовал Maven, и, таким образом, в конфигурации запуска был элемент Mpath класса Maven. Позднее я изменил проект на использование Gradle и удалил путь класса Maven из пути к классу проекта, но его конфигурация все еще использовала его. Я получил эту ошибку, пытаясь запустить ее. Очистка и восстановление проекта не разрешили эту ошибку. Вместо этого отредактируйте конфигурацию запуска, удалите элемент пути к классу проекта, а затем добавьте проект обратно в пользовательские записи в пути к классам.

1

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

1

Основная часть ответа правилу Thorbjørn Ravn Andersen.

Этот ответ пытается пролить свет на оставшийся вопрос: как файл класса с ошибками попадает в банку?

Каждая сборка (mvn & javac или eclipse) сигнализирует по-своему, когда она попадает в ошибку компиляции, и откажется от нее создать файл Jar (или, по крайней мере, предупредить вас). Наиболее вероятной причиной бесшумного получения файлов классов с ошибками в банке является одновременная работа Maven и Eclipse.

Если у вас есть Eclipse, открытой во время работы МВН сборки, вы должны отключитьProject>Сложение Автоматически до МВН не завершится.

0

Убедитесь, что вы удалили недоступные библиотеки (файлы jar) из пути построения

Смежные вопросы