Serwer CI (Hudson), za który jestem odpowiedzialny, buduje projekt Maven. Po ostatnim popełnienia, kompilacja nie powiodła się:Maven nie może skompilować klasy, która zależy od 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
Wymagana klasa (com.sun.xml.internal.messaging.saaj.packaging.mime.util.BASE64EncoderStream) znajduje się w rt.jar.
próbowałem (zgodnie z instrukcją na http://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html#System_Dependencies), aby dodać zależność systemu w pom.xml projektu:
<dependency>
<groupId>dummy</groupId>
<artifactId>dummy</artifactId>
<version>1</version>
<scope>system</scope>
<systemPath>${java.home}/lib/rt.jar</systemPath>
</dependency>
Nie pomogło.
Najciekawsze jest to, że wszystkie pliki zostały skompilowane dobrze na lokalnym komputerze mojego kolegi (używa on wbudowanego kompilatora Eclipse).
W Internecie znalazłem to samo pytanie (link: http://maven.40175.n5.nabble.com/Why-can-t-Maven-find-com-sun-xml-internal-messaging-saaj-util-ByteOutputStream-class-td107361.html). Ostatnią odpowiedzią było to, że przyczyną tego problemu jest kompilacja Javy Oracle.
Tak więc zmieniłem jdk Oracle na OpenJDK, ale to nie pomogło.
Czy ktoś ma jakieś sugestie, jak rozwiązać ten problem?
Używam ByteOutputStream i otrzymuję ten błąd. Kiedy zmieniłem go na ByteArrayOutputStream, zadziałało to jak urok. Nigdy nie wiedziałem o klasach wewnętrznych JRE. – Anshuman