2015-08-08 3 views
6

J'utilise hibernate-jpamodelgen pour générer les classes de métamodèle en utilisant maven.IllegalStateException dans la génération de métamodèle Hibernate avec maven

Lorsque je cours mvn paquet propre, cela fonctionne très bien sans aucun problème. Mais si je lance le paquet mvn deuxième fois (sans nettoyage), je reçois l'exception suivante:

An exception has occurred in the compiler (1.8.0_51). Please file a bug at the Java Developer Connection (http://java.sun.com/webapps/bugreport) after checking the Bug Parade for duplicates. Include your program and the following diagnostic in your report. Thank you. 
java.lang.IllegalStateException: endPosTable already set 
    at com.sun.tools.javac.util.DiagnosticSource.setEndPosTable(DiagnosticSource.java:136) 
    at com.sun.tools.javac.util.Log.setEndPosTable(Log.java:350) 
    at com.sun.tools.javac.main.JavaCompiler.parse(JavaCompiler.java:667) 
    at com.sun.tools.javac.main.JavaCompiler.parseFiles(JavaCompiler.java:950) 
    at com.sun.tools.javac.processing.JavacProcessingEnvironment$Round.<init>(JavacProcessingEnvironment.java:892) 
    at com.sun.tools.javac.processing.JavacProcessingEnvironment$Round.next(JavacProcessingEnvironment.java:921) 
    at com.sun.tools.javac.processing.JavacProcessingEnvironment.doProcessing(JavacProcessingEnvironment.java:1187) 
    at com.sun.tools.javac.main.JavaCompiler.processAnnotations(JavaCompiler.java:1170) 
    at com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:856) 
    at com.sun.tools.javac.main.Main.compile(Main.java:523) 
    at com.sun.tools.javac.api.JavacTaskImpl.doCall(JavacTaskImpl.java:129) 
    at com.sun.tools.javac.api.JavacTaskImpl.call(JavacTaskImpl.java:138) 
    at org.codehaus.plexus.compiler.javac.JavaxToolsCompiler.compileInProcess(JavaxToolsCompiler.java:125) 
    at org.codehaus.plexus.compiler.javac.JavacCompiler.performCompile(JavacCompiler.java:169) 
    at org.apache.maven.plugin.compiler.AbstractCompilerMojo.execute(AbstractCompilerMojo.java:825) 
    at org.apache.maven.plugin.compiler.CompilerMojo.execute(CompilerMojo.java:129) 
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:132) 
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208) 
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153) 
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145) 
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:116) 
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80) 
    at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51) 
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:120) 
    at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:355) 
    at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:155) 
    at org.apache.maven.cli.MavenCli.execute(MavenCli.java:584) 
    at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:216) 
    at org.apache.maven.cli.MavenCli.main(MavenCli.java:160) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:497) 
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289) 
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229) 
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415) 
    at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356) 

Environnement:

JDK version : 1.8.0_51 
Maven version : 3.3 
Hibernate version : 4.3.7.Final 

Snippet de mon pom.xml:

 <dependency> 
      <groupId>org.hibernate</groupId> 
      <artifactId>hibernate-jpamodelgen</artifactId> 
      <version>4.3.7.Final</version> 
      <scope>provided</scope> 
     </dependency> 

Répondre

10

trouvé la réponse! ...

Il y a un bogue dans 3.2 & 3.3 versions de maven-compilateur-plugin.

Quand je lance le « paquet mvn » deuxième temps, le répertoire source généré précédemment est ajouté au chemin source avant la générer source de phase et provoque cette exception de l'analyseur .

Le retour à l'ancienne version (< 3.2) de maven-plugin-compilateur fixe la question.

Notez que la compilation incrémentale est cassé dans 3,0 & 3,1 versions de maven-compilateur-plugin. Donc, je préfère changer la version 2.5.1 de maven-compiler-plugin.

<dependency> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-compiler-plugin</artifactId> 
    <version>2.5.1</version> 
</dependency> 
+1

Avez-vous soumis un rapport de bogue pour cela? – pioto

+0

De nombreuses personnes ont signalé ce problème dans github. L'un d'entre eux est: https: //issues.apache.org/jira/browse/MCOMPILER-205 – Sriram

+0

Depuis @eyes a maintenant donné une version à venir pour essayer de le tester avec votre application et si cela fonctionne pour vous changez votre réponse acceptée. – Sinc

3

Même problème avec la construction des gradients. Si vous avez déjà des classes de métamodèle disponibles @ source-generate (vérifiez le fichier build.gradle pour vérifier le chemin où vos classes de modèle sont générées), ce problème surviendra lors de la génération de la classe progressive.

Solution: Supprimez les classes de modèles existantes et exécutez la génération de gradation. Il devrait s'entraîner.

0

Je viens de trouver une autre cause de cette erreur: une ancienne version de maven-processor-plugin (2.1.0 dans mon cas). J'ai le 'endPosTable déjà défini' même lors de l'exécution du paquetage mvn clean. La mise à niveau de maven-processor-plugin et de hibernate-jpamodelgen vers les dernières versions a aidé.

2

Ce bug est corrigé dans l'intervalle. Vous devez utiliser le plugin maven compiler 3.6 ou supérieur:

<dependency> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-compiler-plugin</artifactId> 
    <version>3.6.0</version> 
</dependency> 
+0

Super. Cela a résolu mon problème avec hibernate, generate-sources, run-annotation-processors-only et Cobertura. Grande combinaison, donc je le mentionne pour donner à quelqu'un d'autre cette combinaison à rechercher. – Sinc