Проблемы с JAXB в Java 7, он говорит, что не может найти RI 2.1.0

Я провожу тест на Ubuntu с Oracle Java 7 Update 3. Согласно примечаниям к выпуску, в него включен JAXB-2.2.4.

/home/ubuntu# update-alternatives --config java
There is only one alternative in link group java: /usr/lib/jvm/java-7-oracle/bin/java
Nothing to configure.

Машина говорит, что на ней установлена ​​JAXB-2.2.4:

$ wsimport -version
JAX-WS RI 2.2.4-b01

$ java -version

java version "1.7.0_03"
Java(TM) SE Runtime Environment (build 1.7.0_03-b04)
Java HotSpot(TM) Client VM (build 22.1-b02, mixed mode)

Однако, когда я запускаю свое приложение, которое использует JAX-RS и упорядочивает некоторые объекты с помощью JAXB, я получаю следующую ошибку:

Apr 05, 2012 10:45:50 AM com.sun.jersey.api.json.JSONConfiguration natural
SEVERE: NATURAL JSON notation configured, but JAXB RI 2.1.10 not found. For the
recent builds to get this working correctly, you need even at least JAXB version
 2.1.12. Please add it to your classpath!
Apr 05, 2012 10:45:50 AM com.sun.jersey.core.spi.component.ProviderFactory __get
ComponentProvider
SEVERE: The provider class, class com.marketchorus.rest.config.JAXBContextResolv
er, could not be instantiated. Processing will continue but the class will not b
e utilized
java.lang.RuntimeException: NATURAL JSON notation configured, but JAXB RI 2.1.10
 not found. For the recent builds to get this working correctly, you need even a
t least JAXB version 2.1.12. Please add it to your classpath!

На стороне сервера у меня изначально была такая же ошибка, поэтому я установил metro-2.2-standalone в tomcat, что устранило проблему. (Несмотря на то, что он работал в Java 7).

В Windows-клиенте мне пришлось добавить JAXB-2.2.5 api, impl и jsr173 jar-файлы в одобренный мной каталог java, чтобы заставить его работать (также с Java 7 update 3).

Когда я пытаюсь выполнить трюк с jaxb под Ubuntu, я помещаю файлы в /usr/lib/jvm/java-7-oracle/jre/lib/endorsed, я получаю другую ошибку:

ERROR 10:55:44.694 taskScheduler-1 org.springframework.scheduling.support.TaskUt
ils$LoggingErrorHandler - Unexpected error occurred in scheduled task.
javax.xml.stream.FactoryConfigurationError: Provider com.bea.xml.stream.MXParser
Factory not found

Я инициализирую JAX Код -RS/JAXB в моем классе выглядит следующим образом:

config = new DefaultClientConfig();
config.getFeatures().put(JSONConfiguration.FEATURE_POJO_MAPPING, Boolean.TRUE);
config.getClasses().add(JAXBContextResolver.class);
client = Client.create(config);
service = client.resource(UriBuilder.fromUri(proc.getUrl()).build());

Я попытался скомпилировать его с исходным кодом = 1.7 и целевым = 1.7, поскольку он все еще был установлен для 1.6, и я подумал, что, возможно, он использует старую версию из ранних выпусков 1.6. который был слишком старым, но это тоже не решает проблему.

Я запустил тестовую программу @andih и все равно получаю сообщение об ошибке. Я начинаю думать, что это проблема виртуальной машины:

ubuntu@ip-10-202-155-29:~/test$ java -cp jersey-client-1.12.jar:jersey-core-1.1
2.jar:jersery-fastinfoset-1.12.jar:jersey-json-1.12.jar:. TestNaturalJson
Apr 23, 2012 10:17:21 AM com.sun.jersey.api.json.JSONConfiguration natural
SEVERE: NATURAL JSON notation configured, but JAXB RI 2.1.10 not found. For the
recent builds to get this working correctly, you need even at least JAXB version
 2.1.12. Please add it to your classpath!
Exception in thread "main" java.lang.RuntimeException: NATURAL JSON notation con
figured, but JAXB RI 2.1.10 not found. For the recent builds to get this working
 correctly, you need even at least JAXB version 2.1.12. Please add it to your cl
asspath!
        at com.sun.jersey.api.json.JSONConfiguration.natural(JSONConfiguration.j
ava:447)
        at TestNaturalJson.main(TestNaturalJson.java:6)
ubuntu@ip-10-202-155-29:~/test$ java -version
java version "1.7.0_03"
Java(TM) SE Runtime Environment (build 1.7.0_03-b04)
Java HotSpot(TM) Client VM (build 22.1-b02, mixed mode)

Оглядываясь назад на одобренное решение с JAXB-2.2.5 RI, я установил файлы:

jaxb-api.jar
jaxb-impl.jar
jsr173_1.0_api.jar

в:

/usr/lib/jvm/java-7-oracle/jre/lib/endorsed

Каталог.Когда я это делаю, я получаю указанную выше ошибку от Spring, ошибка MXParser. Странно то, что под Windows это работает, но не в Ubuntu. Когда я запускаю приведенную ниже тестовую программу @andhi с одобренной настройкой, я получаю OK вместо ошибки. Но по какой-то причине кажется, что Spring под Ubuntu не берет jar-файл JSR173, установленный в одобренном каталоге (который является реализацией STAX).

7
задан haskovec 23 April 2012 в 16:17
поделиться