我负责的 CI-server (Hudson) 构建 Maven 项目。最后一次提交后,构建失败:
[INFO] -------------------------------------------------------------
[ERROR] COMPILATION ERROR :
[INFO] -------------------------------------------------------------
[ERROR] \hudson\jobs\path to my class\MyClass.java:[33,62] package com.sun.xml.internal.messaging.saaj.packaging.mime.util does not exist
[ERROR] \hudson\jobs\path to my class\MyClass.java:[75,5] cannot find symbol
symbol : class BASE64EncoderStream
location: class |fullname of MyClass|
[ERROR] \hudson\jobs\path to my class\MyClass.java:[75,38] cannot find symbol
symbol : class BASE64EncoderStream
location: class |fullname of MyClass|
[INFO] 3 errors
所需的类 (com.sun.xml.internal.messaging.saaj.packaging.mime.util.BASE64EncoderStream) 位于 rt.jar 中。
我尝试(按照http://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html#System_Dependencies的说明)在项目的 pom.xml 中添加系统依赖项:
<dependency>
<groupId>dummy</groupId>
<artifactId>dummy</artifactId>
<version>1</version>
<scope>system</scope>
<systemPath>${java.home}/lib/rt.jar</systemPath>
</dependency>
它没有帮助。
最有趣的是所有文件都在我同事的本地机器上编译良好(他使用 Eclipse 内置编译器)。
在互联网上我发现了同样的问题(链接:http ://maven.40175.n5.nabble.com/Why-can-t-Maven-find-com-sun-xml-internal-messaging-saaj-util-ByteOutputStream-类-td107361.html )。最后一个答案是这个麻烦的原因是Oracle的Java编译器。
所以,我把Oracle的jdk改成了OpenJDK,但是没有用。
有人对如何解决这个问题有任何建议吗?