2012-01-15 9 views
6

Octopus Arm Benchmark (bir takviye öğrenme karşılaştırması) başlatmaya çalışıyorum. Ben octopus-code-distribution.zip indirilen veJAXB ve Java 1.6 ile Java hatası

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

ile ahtapot-environment.jar başladı ve şu istisna var:

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) 

Zaten hata mesajı googled ve benim Java ile ilgili bir sorun gibi görünüyor sürümü. JAXB kitaplığı ile bir şekilde çakışmalara neden olan Java 1.6 kullanıyorum. Java 1.5 ile çalışacağını düşünüyorum. Ama henüz bir çözüm bulamadım.

Umarım bana burada yardımcı olabilirsiniz. Bazı arka plan bilgileri: Ubuntu 11.04 kullanıyorum ve Java sürümüm 1.6.0_26. JAXB 2.0

+3

Java 1.6, JAXB kitaplığını içerir. Harici bir JAXB kavanozu kullanmayın. –

+0

Java 1.7 için bir sürüm indirip yükleyemediğinizi kontrol edin. Java 1.6 için değil. – SHiRKiT

+0

GregS: Bu benim kodum değil ve değiştirmek istemedim. SHiRKiT: Kod çok eski (~ 2006), bu yüzden Java 1.5 için daha olası olduğunu düşünüyorum. – alfa

cevap

6

, AccessType (AccessorType da XmlAccessorType yeniden adlandırılır) XmlAccessType adlandırılır. Böylece, JAXB'nin erken anlık görüntülerinin kullanıcıları bu probleme maruz kalmaktadır. Yani iki seçenek vardır:

  1. Update JAXB

  2. geçersiz kılma Java 6. ile ortamında kullanılan biriyle JAXB uygulanması sevk kullanabilmesi kaynak kodu. dosyanın octopus-environment.jar ait MANIFEST dosyası gerekli dosyaları/lib klasörü altında saklanır gösterir, bu nedenle bu Java Endorsed Standards Override Mechanism böylece Java 6 sevk varsayılan JAXB geçersiz kılabilir güçlendirir

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

çalıştırabilirsiniz.

+1

Kaynak kodunu değiştirmek istemiyorum. Seçenek 2 çok iyi çalışıyor. Çok iyi bir açıklama. Zaman ayırdığın için teşekkürler! :) – alfa