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