Ошибка компиляции: сбой при выполнении javac, но не удалось разобрать ошибку - PullRequest
1 голос
/ 19 марта 2012

У меня возникает следующая ошибка при запуске задания Hudson, например mvn clean compile.

[INFO] Compiling 1541 source files to /users/applis/33g/ad33gwas/.hudson/jobs/sonar facade-commande/workspace/facade-commande/target/classes
[INFO] -------------------------------------------------------------
[ERROR] COMPILATION ERROR : 
[INFO] -------------------------------------------------------------
[ERROR] Failure executing javac, but could not parse the error:
An exception has occurred in the compiler (1.5.0_12). 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.AssertionError

Есть ли у вас какие-либо идеи о причине этой проблемы?

Ответы [ 2 ]

4 голосов
/ 19 марта 2012

Вы столкнулись с ошибкой компилятора. Непонятно, какая ошибка это может быть, но есть большая вероятность, что она будет исправлена ​​путем обновления до более поздней версии JDK.

(Вы, очевидно, используете java 1.5.0_u12, и это довольно давно. Последний свободно доступный релиз патча для Java 1.5 - это java 1.5.0_u22. Более поздние версии 1.5 (до 1.5.0._u34) доступны для люди с подпиской Java для бизнеса . Кроме того, вы можете перейти на Java 1.6 или 1.7.)

0 голосов
/ 19 марта 2012

У меня была эта проблема несколько раз. Вам уже повезло, что компилятор даже сообщает об ошибке, потому что в моем случае этого не произошло, а Maven позже потерпел неудачу с некоторой непонятной ошибкой.

В конце концов я обнаружил, что компилятор не очень хорошо справляется с какой-либо сложной типизацией (что-то вроде <A extends MyObject<A1,A2>, A1 extends MyObject2<A2>, A2 extends MyObject3>). Обновление JVM может решить вашу проблему, но, скорее всего, снова наткнется на то, как развивается ваш код. Кажется, что такие ошибки исчезли в JDK-7, но я не уверен.

В любом случае, одним из решений является использование альтернативного компилятора для вашего кода (например, tycho), вы можете сделать это следующим образом в вашем pom.xml (либо в build -> plugins, либо в build -> pluginManagement -> plugins ):

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>${compiler.source}</source>
                    <target>${compiler.target}</target>
                    <encoding>${source.encoding}</encoding>
                    <fork>false</fork>
                    <compilerId>jdt</compilerId>
                </configuration>
                <dependencies>
                    <dependency>
                        <groupId>org.eclipse.tycho</groupId>
                        <artifactId>tycho-compiler-jdt</artifactId>
                        <version>0.13.0</version>
                    </dependency>
                </dependencies>
            </plugin>

Если вы используете Eclipse и M2E 1.0 или выше, вы получите ошибку, но вы можете избавиться от нее, добавив следующий фрагмент в ваш pom.xml (в build -> pluginManagement -> plugins):

            <plugin>
                <groupId>org.eclipse.m2e</groupId>
                <artifactId>lifecycle-mapping</artifactId>
                <version>1.0.0</version>
                <configuration>
                    <lifecycleMappingMetadata>
                        <pluginExecutions>
                            <pluginExecution>
                                <pluginExecutionFilter>
                                    <groupId>org.apache.maven.plugins</groupId>
                                    <artifactId>maven-compiler-plugin</artifactId>
                                    <versionRange>[2.0,)</versionRange>
                                    <goals>
                                        <goal>compile</goal>
                                        <goal>testCompile</goal>
                                    </goals>
                                    <parameters>
                                        <compilerId>jdt</compilerId>
                                    </parameters>
                                </pluginExecutionFilter>
                                <action>
                                    <configurator>
                                        <id>org.eclipse.m2e.jdt.javaConfigurator</id>
                                    </configurator>
                                </action>
                            </pluginExecution>
                        </pluginExecutions>
                    </lifecycleMappingMetadata>
                </configuration>
            </plugin>

Довольно уродливо и о проблеме сообщили разработчикам m2e, но они не считают это приоритетом, поэтому вам придется с этим смириться

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...