Поддерживаемая исходная версия RELEASE_6 от процессора аннотаций org.eclipse.persistence.internal.jpa.modelgen.CanonicalModelProcessor меньше, чем source1.7

У меня есть корпоративное приложение, работающее в следующей среде.

  • Моджарра 2.2.7
  • PrimeFaces 5.0 финал
  • PrimeFaces Extension 2.0 финал
  • OmniFaces 1.8.1
  • EclipseLink 2.5.2 с JPA 2.1
  • GlashFish 4.0
  • IDE NetBeans 8.0
  • JDK 1,7

Я изменил уровни источника до 1,7 с 1,6 в project.properties файл под nbproject во всех трех модулях (модуль Java EE, модуль EJB и модуль WAR) поддерживать Java EE 7. Это не проект Maven.

  • j2ee.platform=1.7
  • javac.source=1.7
  • javac.target=1.7

Раньше все они были 1.6.


После этих изменений при очистке проекта появляется следующее предупреждение.

предупреждение: Поддерживаемая исходная версия 'RELEASE_6' из процессора аннотаций 'org.eclipse.persistence.internal.jpa.modelgen.CanonicalModelProcessor' меньше чем -source '1.7'

Я использую генератор метамодели EclipseLink 1.3.0 final для создания статической метамодели.

Есть ли способ избавиться от этого предупреждения, кроме понижения уровня источника до 1.6? Есть ли несовместимость с этим предупреждением?


Обновить:

Это предупреждение больше не воспроизводится в EclipseLink 2.6.1 (доступно с четверга, 15 октября 2015 г.) с соответствующим генератором метамодели, предоставленным комплектом - org.eclipse.persistence.jpa.modelgen_2.6.1.v20150916-55dc7c3.jar,

В настоящее время тестируется с использованием EclipseLink 2.6.1 (JPA 2.1) и JDK 8u45 на GlassFish 4.1 / Java EE 7.

Я предполагаю, что это исправлено.

1 ответ

Решение

В соответствии со спецификацией API Java, аннотация @SupportedSourceVersion (которая является источником журнала) определяет "последнюю версию источника, поддерживаемую процессором аннотаций", а не минимальную.

Читая обсуждение на этой теме на форуме NetBeans, вы можете предложить несколько решений. Я думаю, что единственное решение - изменить код в CanonicalModelProcessor:

Чтобы среда выполнения EclipseLink была совместима с Java 6, у вас есть @SupportedSourceVersion(RELEASE_6)

Для правильной адаптации к компиляции Java 7 у вас должен быть @SupportedSourceVersion(RELEASE_7)

Но, насколько я понимаю, вы не компилируете EclipseLink самостоятельно. Основная проблема (и причина предупреждения) заключается в том, что поставщик программного обеспечения (то есть основа Eclipse) гарантирует надлежащую обработку кода в среде Java SE 6.

Проблема была зарегистрирована как ошибка JDK. Вывод заключается в том, что другого четкого обходного пути нет.

Решением было бы указать константу RELEASE7 (по крайней мере, в соответствии с тем, что говорит API). Но если команда EclipseLink делает, они не могут скомпилировать в среде Java 6.

Итак, собираете ли вы EclipseLink самостоятельно с правильной константой, живете ли вы с предупреждением...

Другие вопросы по тегам