2015-08-08 15 views
6

Tôi đang sử dụng hibernate-jpamodelgen để tạo các lớp metamodel bằng cách sử dụng maven.IllegalStateException trong thế hệ metamodel Hibernate với maven

Khi tôi chạy gói sạch mvn, nó hoạt động tốt mà không gặp bất kỳ sự cố nào. Nhưng nếu tôi chạy gói mvn lần thứ hai (không sạch), tôi nhận được ngoại lệ sau đây:

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) 

Môi trường:

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

Snippet từ pom.xml của tôi:

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

Trả lời

10

Tìm thấy câu trả lời! ...

Đó là lỗi trong 3.2 & 3.3 Phiên bản maven-compiler-plugin.

Khi tôi chạy 'gói mvn' lần thứ hai, thư mục nguồn tạo ra trước đó sẽ được thêm vào đường dẫn nguồn trước khi tạo ra nguồn giai đoạn và nó gây ra phân tích cú pháp này ngoại lệ.

Switching trở lại phiên bản cũ (< 3.2) của maven-biên dịch-plugin sửa vấn đề này.

Lưu ý rằng gia tăng biên soạnchia trong 3,0 & 3,1 phiên bản của maven-biên dịch-plugin. Vì vậy, tôi thích chuyển đổi phiên bản 2.5.1 của trình biên dịch-maven-plugin.

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

Bạn đã gửi báo cáo lỗi cho điều này chưa? – pioto

+0

Nhiều người đã báo cáo vấn đề này trong github. Một trong số đó là: https: //issues.apache.org/jira/browse/MCOMPILER-205 – Sriram

+0

Vì @eyes hiện đã đưa ra một phiên bản tiếp theo để sử dụng, hãy thử kiểm tra nó với ứng dụng của bạn và nếu nó hoạt động cho bạn thay đổi câu trả lời được chấp nhận của bạn. – Sinc

3

Cùng một vấn đề phải đối mặt với việc xây dựng gradle. Nếu bạn có các lớp metamodel trước đây có sẵn @ nguồn-tạo (vui lòng kiểm tra tệp build.gradle để kiểm tra đường dẫn nơi các lớp mô hình của bạn được tạo), vấn đề này sẽ đến khi chạy gradle build.

Giải pháp: Xóa các lớp mô hình hiện có và chạy xây dựng gradle. Nó nên tập luyện.

0

Tôi vừa tìm thấy một nguyên nhân khác của lỗi này: phiên bản cũ của trình xử lý maven-plugin (2.1.0 trong trường hợp của tôi). Tôi đã nhận 'endPosTable đã được thiết lập' ngay cả khi chạy gói mvn clean. Nâng cấp maven-processor-plugin và hibernate-jpamodelgen lên phiên bản mới nhất đã giúp.

2

Lỗi này được sửa trong thời gian chờ đợi. Bạn nên sử dụng plugin trình biên dịch maven 3.6 trở lên:

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

Tuyệt vời. Điều này giải quyết vấn đề của tôi với hibernate, tạo ra nguồn, chạy-chú thích-bộ vi xử lý-chỉ và Cobertura. Sự kết hợp lớn, vì vậy tôi đề cập đến nó để cung cấp cho người khác kết hợp để tìm kiếm. – Sinc

Các vấn đề liên quan