Ошибка Java с JAXB и Java 1.6 - PullRequest
       38

Ошибка Java с JAXB и Java 1.6

6 голосов
/ 16 января 2012

Я пытаюсь запустить эталонный тест Octopus Arm (эталон обучения подкреплению).Я скачал octopus-code-distribution.zip и запустил octopus-environment.jar с

java -jar octopus-environment.jar internal settings.xml

, и я получил следующее исключение:

Exception in thread "main" java.lang.NoSuchMethodError: javax.xml.bind.annotation.XmlAccessorType.value()Ljavax/xml/bind/annotation/AccessType;
at com.sun.xml.bind.v2.model.impl.ClassInfoImpl.getAccessType(ClassInfoImpl.java:339)
at com.sun.xml.bind.v2.model.impl.ClassInfoImpl.getProperties(ClassInfoImpl.java:228)
at com.sun.xml.bind.v2.model.impl.RuntimeClassInfoImpl.getProperties(RuntimeClassInfoImpl.java:87)
at com.sun.xml.bind.v2.model.impl.ModelBuilder.getClassInfo(ModelBuilder.java:127)
at com.sun.xml.bind.v2.model.impl.RuntimeModelBuilder.getClassInfo(RuntimeModelBuilder.java:49)
at com.sun.xml.bind.v2.model.impl.RuntimeModelBuilder.getClassInfo(RuntimeModelBuilder.java:41)
at com.sun.xml.bind.v2.model.impl.ModelBuilder.getTypeInfo(ModelBuilder.java:189)
at com.sun.xml.bind.v2.model.impl.ModelBuilder.getTypeInfo(ModelBuilder.java:204)
at com.sun.xml.bind.v2.runtime.JAXBContextImpl.getTypeInfoSet(JAXBContextImpl.java:327)
at com.sun.xml.bind.v2.runtime.JAXBContextImpl.<init>(JAXBContextImpl.java:198)
at com.sun.xml.bind.v2.ContextFactory.createContext(ContextFactory.java:76)
at com.sun.xml.bind.v2.ContextFactory.createContext(ContextFactory.java:55)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:202)
at javax.xml.bind.ContextFinder.find(ContextFinder.java:363)
at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:574)
at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:522)
at Main.main(Main.java:41)

Я уже погуглил сообщение об ошибке, и это, кажется, проблема с моей версией Java.Я использую Java 1.6, которая как-то вызывает конфликты с библиотекой JAXB.Я думаю, что это будет работать с Java 1.5.Но я еще не нашел обходного пути.

Надеюсь, вы мне поможете.Немного справочной информации: я использую Ubuntu 11.04 и моя версия Java 1.6.0_26.

1 Ответ

6 голосов
/ 16 января 2012

В JAXB 2.0 AccessType переименовано в XmlAccessType (AccessorType также переименовано в XmlAccessorType).Таким образом, пользователи ранних снимков JAXB подвержены этой проблеме.Таким образом, у вас есть два варианта:

  1. Обновите исходный код, чтобы вы могли использовать JAXB, поставляемый с Java 6.

  2. Переопределить реализацию JAXB с помощьюодин используется в вашей среде.Файл МАНИФЕСТА файла octopus-environment.jar показывает, что необходимые файлы хранятся в папке / lib, поэтому вы можете запустить

java -Djava.endorsed.dirs=./lib -jar octopus-environment.jar internal settings.xml

Это использует Java одобрил механизм переопределения стандартов , так что вы можете переопределить JAXB по умолчанию, поставляемый в Java 6.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...