私が担当している CI サーバー (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 にあります。
プロジェクトの pom.xml にシステム依存関係を追加しようとしました ( http://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html#System_Dependenciesの指示に従って):
<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- class-td107361.html )。最後の回答は、この問題の原因は Oracle の Java コンパイラにあるというものでした。
そこで、Oracle の jdk を OpenJDK に変更しましたが、役に立ちませんでした。
この問題を解決する方法について何か提案はありますか?