it-swarm.com.ru

Ошибка при использовании LogManager (l4j2) с Java 8 (Java.lang.reflect.AnnotatedElement не может быть решена)

Я только что столкнулся со странной ошибкой при переключении JDK-версии моего нового Проекта с 7u45 на 8u20. Безвредное объявление LogManager в начале моего класса отклоняется со следующей ошибкой:

Тип Java.lang.reflect.AnnotatedElement не может быть разрешен. На него косвенно ссылаются необходимые файлы .class

Это код:

public class Class1 {   
    private static Logger log = LogManager.getLogger(Class1.class); 
    ...

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

Используя JDK с версией 7, все работает отлично. 

13
Corsair

При использовании JDK 8 и IDE (или любого другого инструмента/инфраструктуры обработки кода) со своим собственным компилятором, таким как Eclipse, необходимо обновить инструмент до версии с поддержкой Java 8, даже если вы не используете более новые функции Java 8.

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

Иногда вы можете избежать проблем со старым компилятором, когда он игнорирует новый номер версии файлов классов. Но некоторые типы будут путать старые парсеры файлов классов, поскольку они используют новые функции, в частности AnnotatedElement , который теперь имеет методы default, и Map.Entry , interface, который теперь имеет методы static.

Похоже, что Eclipse не делает различий между ссылками, для которых не найден файл классов, и файлами классов, которые он не смог прочитать, говоря «« classname » не может быть разрешено».

То же самое относится ко всем инструментам и фреймворкам, использующим ECJ в качестве встроенного компилятора.

26
Holger

Если это происходит с вами в Tomcat, работающем из Eclipse ( вопрос был закрыт как дубликат и перенаправления здесь), перейдите в «Предпочтения» → «Сервер» → «Среды выполнения» → версия Tomcat → «Редактировать» и убедитесь, что выбранный JRE соответствует версии Tomcat. (Может быть, вам нужно установить один.)

1
Paramaeleon

Я перехожу с JRE 8 на JRE 7 и перезапускаю Eclipse, после чего он работает нормально.

0
Duong

Я использовал Eclipse Helios с JRE 8, и обновление программного обеспечения решило проблему. 

Сейчас я использую Eclipse Mars и отлично работает -> https://Eclipse.org/downloads/

0
Jessica

Решение 1:

Попробуйте изменить уровень источника.

  1. Перейдите в Проект> Настройки> Компилятор Java.
  2. Включить настройки проекта
  3. Установите уровень соответствия компилятора на 1.4 или ниже.
  4. Запустить снова

Решение 2: 

  1. Создать новое рабочее пространство.
  2. Скопируйте файлы проекта в новое рабочее пространство.
  3. Импортировать проект в Eclipse и перестроить.
0
Abhishek Muralidharan