Один из наших классов использует связанный jaxb api jdk 1.6. Когда я пытаюсь скомпилировать это с помощью maven (JAVA_HOME установлен в JDK 1.6, и он показывает в IDE, что maven работает с использованием JDK 1.6), я получаю ошибку класса, не найденную для библиотеки jaxb. рассматриваемый класс присутствует в rt.jar в папке JDK 1.6 lib. Есть идеи???Maven не собирает библиотеки JDK 1.6
ответ
Ну ... ошибка была связана с использованием одного из внутренних классов солнца, который не был доступен во время компиляции maven. Его интересный сценарий, хотя ...
В моем проекте используется пространство имен, предоставляемое внутренними библиотеками JAXB от солнца. Он скомпилирован в среде без затухания eclipse (с предупреждением), поскольку rt.jar был в пути к классам. Мы начали обманывать этот проект, и внезапно я получил ClassNotFound для этого. После некоторого гуглинга я наткнулся на эти два поста, которые заставили меня двигаться в правильном направлении.
http://forums.java.net/jive/thread.jspa?threadID=24225
http://www-01.ibm.com/support/docview.wss?rs=180&uid=swg1PK88316
BottomLine: Не использовать внутренние библиотеки (имена пакетов имеют внутреннее в них).
Попробуйте добавить этот плагин для вашего pom.xml Maven сборки секции:
<build>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.1</version>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
</plugins>
</build>
Update: Это не работает.
Вы пробовали это?
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.1</version>
<scope>system</scope>
<systemPath>${java.home}/lib/rt.jar</systemPath>
</dependency>
Нет ... это не работает .... – Manoj
Попробуйте мое второе решение. Мне жаль, но я не могу воспроизвести вашу проблему в данный момент :-) – sourcerebels
Hi SourceRebels, Спасибо за сообщение. Как указано в моем ответе, использование внутреннего класса (com.sun.xml.internal.bind.marshaller.NamespacePrefixMapper) не является хорошей практикой и, следовательно, вместо того, чтобы заставить его работать как есть, я удалил зависимость от внутренней реализации jaxb и изменил мой код для импорта из jaxb ri. Это решило мою проблему. – Manoj
Какое исключение, в частности? – skaffman