私が担当しているCIサーバ(Hudson)は、Mavenプロジェクトをビルドします。最後にコミットした後、ビルドに失敗しました:Mavenはrt.jarに依存するクラスをコンパイルできません
[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に変更しましたが、それは役に立ちませんでした。
誰かがこの問題の解決方法について提案していますか?
私はByteOutputStreamを使用していましたが、このエラーが発生しました。 ByteArrayOutputStreamに変更すると、魅力的に機能しました。 JREの内部クラスについては決して知らなかった。 – Anshuman