Поддерживаемая исходная версия RELEASE_6 из обработчика аннотации. Org.eclipse.persistence.internal.jpa.modelgen.CanonicalModelProcessor меньше источника1.7

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

  • Mojarra 2.2.7
  • PrimeFaces 5.0 final
  • PrimeFaces Extension 2.0 final
  • OmniFaces 1.8.1
  • EclipseLink 2.5.2 с JPA 2.1
  • GlashFish 4.0
  • NetBeans IDE 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 с собственной константой, независимо от того, живете ли вы с предупреждением...