Java 1.5 vs. 1.6 JAXB compliance level

Topsen

Mitglied
Hallo zusammen,

habe folgendes Problem. Habe eine Applikation, die mit JDK 1.5 gebaut wird (was auch so bleiben soll).
Jetzt gibt es Anwender die mittlerweile JRE 1.6 verwenden und dabei gibt es folgende Exception:
xception 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.RegistryInfoImpl.<init>(RegistryInfoImpl.java:51)
....
Das Problem ist eine Änderung der Namensgebung: AccessType --> XMLAccessType

Die dafür verwendeten jars liegen beim jre1.6 mit im Bauch. Beim erzeugen der Applikation werden alte JAXB jars angezogen.

Kann ich beim JRE 1.6 wie beim bauen einen compliancelevel angeben 1.5 ? Oder kann ich die jars explicit angeben austauschen?

Gruß und DAnke,

Topsen
 
Ich habe jetzt einfach die neue Version von JAXB in mein Projekt eingebaut und mit J 5 compiliert. Damit scheint es jetzt sowohl unter JRE 6 als auch JRE 5 zu laufen.
 
Das kommt daher, dass Java 6, sein eigenes Jaxb enthält. Wenn du daher eine spezifische Version hast, musst du diese ggf. ins endorsed Verzeichnis legen.
Dadurch werden die Jars im endorsed vorgezogen.

Natürlich ist es jedoch sinnvoller die aktuelle jaxb Version zu verwenden. (nicht vergessen ab Java 6 Update 4, wurde auf 2.1 umgestellt)
 

Neue Beiträge

Zurück