web-dev-qa-db-fra.com

Version source prise en charge RELEASE_6 du processeur d'annotation org.Eclipse.persistence.internal.jpa.modelgen.CanonicalModelProcessor moins que source1.7

J'ai une application d'entreprise fonctionnant dans l'environnement suivant.

  • Mojarra 2.2.7
  • PrimeFaces 5.0 final
  • PrimeFaces Extension 2.0 final
  • OmniFaces 1.8.1
  • EclipseLink 2.5.2 ayant JPA 2.1
  • GlashFish 4.0
  • NetBeans IDE 8.0
  • JDK 1.7

J'ai changé les niveaux source de 1,7 à 1,6 dans le project.properties fichier sous nbproject dans les trois modules (module Java EE, module EJB et module WAR) pour prendre en charge Java EE 7. Il s'agit de pas un projet Maven.

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

Plus tôt, ils étaient tous 1,6.


Après ces modifications, l'avertissement suivant s'affiche lors du nettoyage du projet.

avertissement: version source prise en charge 'RELEASE_6' du processeur d'annotation 'org.Eclipse.persistence.internal.jpa.modelgen.CanonicalModelProcessor' less than -source '1.7'

J'utilise le générateur de métamodèle EclipseLink 1.3. final pour générer un métamodèle statique.

Existe-t-il un moyen de se débarrasser de cet avertissement autre que la rétrogradation du niveau source à 1,6? Y a-t-il une incompatibilité avec cet avertissement?


Mise à jour:

Cet avertissement n'est plus reproductible dans EclipseLink 2.6.1 (disponible depuis le jeudi 15 octobre 2015) avec le générateur de métamodèle respectif fourni par le bundle - org.Eclipse.persistence.jpa.modelgen_2.6.1.v20150916-55dc7c3.jar.

Actuellement testé avec EclipseLink 2.6.1 (JPA 2.1) et JDK 8u45 sur GlassFish 4.1/Java EE 7.

Je suppose que c'est fixe.

15
Tiny

Selon la Java API , l'annotation @SupportedSourceVersion (qui est l'origine du journal) spécifie "la dernière version source prise en charge par un processeur d'annotations", pas la le minimum.

En lisant un discussion sur le forum NetBeans sur ce sujet, cela suggère que vous avez peu de solutions. Je suppose que la seule solution est de changer le code dans CanonicalModelProcessor :

Pour que le runtime EclipseLink soit compatible avec Java 6, vous avez @ SupportedSourceVersion (RELEASE_6)

Pour être correctement adapté à une compilation Java 7, vous devez avoir @ SupportedSourceVersion (RELEASE_7)

Mais si je comprends bien, vous ne compilez pas EclipseLink par vous-même. Le principal problème (et la raison de l'avertissement) est que le fournisseur de logiciels (c'est-à-dire la fondation Eclipse) garantit un traitement correct du code dans un environnement Java SE 6).

Le problème était signalé comme JDK bug. La conclusion est qu'il n'y a pas d'autre solution de contournement claire.

La solution serait de spécifier la constante RELEASE7 (au moins selon ce que dit l'API). Mais si l'équipe EclipseLink le fait, elle ne peut pas compiler dans un environnement Java 6.

Donc, que vous compiliez EclipseLink vous-même avec la constante appropriée, que vous respectiez l'avertissement ...

14
bdulac