2015-08-08 8 views
6

Sto usando hibernate-jpamodelgen per generare le classi metamodel usando maven.IllegalStateException nella generazione di metamodelli Hibernate con Maven

Quando eseguo il pacchetto mvn clean, funziona senza problemi. Ma se faccio funzionare il pacchetto mvn seconda volta (senza pulito), sto ottenendo la seguente eccezione:

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) 

Ambiente:

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

Snippet dal mio pom.xml:

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

risposta

10

trovato la risposta! ...

E 'un bug nel 3.2 & 3,3 versioni di Maven-compilatore-plugin.

Quando si esegue il 'pacchetto mvn' seconda volta, la directory di origine precedentemente generato viene aggiunto al percorso sorgente prima della generate-sorgente fase e provoca tale eccezione parser.

Ritornando alla versione precedente (< 3.2) di Maven-compiler-plugin correzioni il problema.

Si noti che il compilazione incrementale è rotto in 3,0 & 3,1 versioni di Maven-compilatore-plugin. Quindi, preferisco cambiare la versione 2.5.1 di maven-compiler-plugin.

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

Hai inviato una segnalazione di bug per questo? – pioto

+0

Molte persone hanno segnalato questo problema in github. Uno di questi è: https: //issues.apache.org/jira/browse/MCOMPILER-205 – Sriram

+0

Poiché @eyes ha ora fornito una versione da utilizzare, provare a testarla con l'app e, se funziona, modificare la risposta accettata. – Sinc

3

Lo stesso problema con la versione gradle. Se sono già disponibili classi metamodel @ source-generate (controllare il file build.gradle per controllare il percorso in cui vengono generate le classi del modello), questo problema arriverà quando si eseguirà gradle build.

Soluzione: eliminare le classi modello esistenti ed eseguire la generazione gradle. Dovrebbe allenamento.

0

Ho appena trovato un'altra causa di questo errore: una vecchia versione del plug-in maven-processor (2.1.0 nel mio caso). Ho ottenuto l'endPosTable già impostato anche quando si esegue il pacchetto mvn clean. È stato possibile aggiornare il plug-in maven-processor-plug e hibernate-jpamodelgen alle ultime versioni.

2

Questo bug è stato risolto nel frattempo. Dovresti usare maven plugin del compilatore 3.6 o successivo:

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

Grande. Questo ha risolto il mio problema con l'ibernazione, generare fonti, eseguire solo annotazioni-processori e Cobertura. Una grande combinazione, quindi lo sto citando per dare a qualcun altro quella combinazione su cui cercare. – Sinc