2012-03-19 196 views
1

我在启动像mvn clean compile这样的Hudson作业时遇到了跟随错误。编译错误:执行javac失败,但无法解析错误

[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 

你对这个问题有什么理由吗?

+0

安装的Java版本? – Viruzzo 2012-03-19 10:40:38

+0

显示您的JAVA_HOME – Ilya 2012-03-19 10:43:03

+1

尝试启用启用完全调试日志记录的Maven('mvn -e -X clean compile')。然后用你获得的信息更新你的问题。 – sleske 2012-03-19 10:45:38

回答

0

我有过这个问题多次。编译器甚至会报告一个错误,因为在我的情况下它并没有这样做,而且Maven以后失败时会出现一些不可理解的错误。

最终,我发现编译器没有很好地处理一些复杂的输入(类似<A extends MyObject<A1,A2>, A1 extends MyObject2<A2>, A2 extends MyObject3>)。更新JVM可能会解决您的问题,但也可能随着代码的发展而再次出现问题。似乎这些错误在JDK-7中已经消失,但我无法确定。

无论如何,一个解决方案是使用备用的编译器为您的代码(如第谷),你可以像下面这样做在你的pom.xml(无论是在构建 - >插件或建立 - > pluginManagement - >插件):

  <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(在建摆脱它 - > pluginManagement - >插件):

  <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开发商而T3嘿不认为这是一个优先事项,所以你必须忍受它

4

你遇到了一个编译器错误。目前还不清楚它可能是哪个bug,但很有可能通过升级到更高版本的JDK来修复它。 (你显然正在运行java 1.5.0_u12,这是相当古老的版本。最后一个可免费获得的Java 1.5补丁版本是java 1.5.0_u22,更新版本是1.5版本(1.5.0._u34)。对于拥有Java for Business订阅的用户,或者可以升级到Java 1.6或1.7。)

+0

使用jdk 1.8_4X,我升级到1.8_51,但我仍然看到这个错误:'执行javac失败,但无法解析错误: /bin/sh:c:/progra~1/java/jdk1.6.0_24/bin/javac:没有这样的文件或目录# – 2015-07-14 19:43:57

+0

@KevinMeredith - 看看错误消息。仔细阅读。为什么它谈论一个JDK 1.6安装?你的哈德森配置中的东西是指一个旧的Java安装(我猜测)不再存在。找到它发生的地方,你有95%的人解决了这个问题。 – 2015-07-14 22:33:14

相关问题