JAXB和Java 1.6的Java错误

JAXB和Java 1.6的Java错误,java,jaxb,version,Java,Jaxb,Version,我正在尝试启动(强化学习基准测试)。我下载了并启动了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/A

我正在尝试启动(强化学习基准测试)。我下载了并启动了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)
线程“main”java.lang.NoSuchMethodError中的异常:javax.xml.bind.annotation.XmlAccessorType.value()Ljavax/xml/bind/annotation/AccessType; 位于com.sun.xml.bind.v2.model.impl.ClassInfo impl.getAccessType(ClassInfo impl.java:339) 在com.sun.xml.bind.v2.model.impl.ClassInfo impl.getProperties(ClassInfo impl.java:228)上 位于com.sun.xml.bind.v2.model.impl.RuntimeClassInfo.getProperties(RuntimeClassInfo.java:87) 位于com.sun.xml.bind.v2.model.impl.ModelBuilder.getClassInfo(ModelBuilder.java:127) 位于com.sun.xml.bind.v2.model.impl.RuntimeModelBuilder.getClassInfo(RuntimeModelBuilder.java:49) 位于com.sun.xml.bind.v2.model.impl.RuntimeModelBuilder.getClassInfo(RuntimeModelBuilder.java:41) 位于com.sun.xml.bind.v2.model.impl.ModelBuilder.getTypeInfo(ModelBuilder.java:189) 位于com.sun.xml.bind.v2.model.impl.ModelBuilder.getTypeInfo(ModelBuilder.java:204) 位于com.sun.xml.bind.v2.runtime.JAXBContextImpl.getTypeInfoSet(JAXBContextImpl.java:327) 位于com.sun.xml.bind.v2.runtime.JAXBContextImpl.(JAXBContextImpl.java:198) 位于com.sun.xml.bind.v2.ContextFactory.createContext(ContextFactory.java:76) 位于com.sun.xml.bind.v2.ContextFactory.createContext(ContextFactory.java:55) 在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处 位于sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)中 位于java.lang.reflect.Method.invoke(Method.java:597) 位于javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:202) 位于javax.xml.bind.ContextFinder.find(ContextFinder.java:363) 位于javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:574) 位于javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:522) Main.Main(Main.java:41) 我已经在谷歌上搜索了错误消息,我的Java版本似乎有问题。我使用的是Java1.6,这在某种程度上导致了与JAXB库的冲突。我认为它可以与Java1.5一起工作。但我还没有找到解决办法


我希望你能在这里帮助我。一些背景信息:我正在使用Ubuntu11.04,我的Java版本是1.6.0_26。

在JAXB2.0中,
AccessType
被重命名为
XmlAccessType
AccessorType
也被重命名为
XmlAccessorType
)。因此,JAXB早期快照的用户会遇到这个问题。所以你有两个选择:

  • 更新源代码,以便可以使用Java6附带的JAXB

  • 使用环境中使用的JAXB实现重写JAXB实现。文件
    octopus environment.jar的清单文件显示所需文件存储在/lib文件夹下,因此您可以运行

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


    这利用了,因此您可以覆盖Java 6中提供的默认JAXB。

    Java 1.6包括JAXB库。不要使用外部JAXB jar。检查是否下载了Java1.7版本而不是Java1.6GregS版本:这不是我的代码,我不想更改它。SHiRKiT:代码非常旧(~2006),所以我想它更适合Java1.5。我不想更改源代码。方案2运作良好。很好的解释。谢谢你抽出时间!:)