Поддерживаемая исходная версия 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 с собственной константой, независимо от того, живете ли вы с предупреждением...