Я создал простой java-клиент, который строит XML-сообщение на основе классов, созданных из XSD, а затем воспринимает их в веб-службе. Он отлично работает, когда я проверить его с моей рабочей станции, но когда я загрузить классы в базу данных Oracle Я получаю следующее сообщение об ошибке:не может получить доступ к суперклассу из класса
Exception in thread "Root Thread" java.lang.IllegalAccessError: cannot access superclass from class
at sun.misc.Unsafe.defineClass(Native Method)
at sun.reflect.ClassDefiner.defineClass(ClassDefiner.java)
at sun.reflect.MethodAccessorGenerator$1.run(MethodAccessorGenerator.java)
at java.security.AccessController.doPrivileged(Native Method)
at sun.reflect.MethodAccessorGenerator.generate(MethodAccessorGenerator.java)
at sun.reflect.MethodAccessorGenerator.generateConstructor(MethodAccessorGenerator.java)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java)
at java.lang.reflect.Constructor.newInstance(Constructor.java)
at java.lang.reflect.Proxy.newInstance(Proxy.java)
at java.lang.reflect.Proxy.newProxyInstance(Proxy.java)
at sun.reflect.annotation.AnnotationParser.annotationForMap(AnnotationParser.java)
at sun.reflect.annotation.AnnotationParser.parseAnnotation2(AnnotationParser.java)
at sun.reflect.annotation.AnnotationParser.parseAnnotations2(AnnotationParser.java)
at sun.reflect.annotation.AnnotationParser.parseAnnotations(AnnotationParser.java)
at java.lang.reflect.Field.declaredAnnotations(Field.java)
at java.lang.reflect.Field.getDeclaredAnnotations(Field.java)
at java.lang.reflect.AccessibleObject.getAnnotations(AccessibleObject.java)
at com.sun.xml.internal.bind.v2.model.annotation.RuntimeInlineAnnotationReader.getAllFieldAnnotations(RuntimeInlineAnnotationReader.java)
at com.sun.xml.internal.bind.v2.model.annotation.RuntimeInlineAnnotationReader.getAllFieldAnnotations(RuntimeInlineAnnotationReader.java)
at com.sun.xml.internal.bind.v2.model.impl.ClassInfoImpl.findFieldProperties(ClassInfoImpl.java)
at com.sun.xml.internal.bind.v2.model.impl.ClassInfoImpl.getProperties(ClassInfoImpl.java)
Я думал, что это может быть вызвано классами, находящихся в разных пакетах так, то я переехал все классы для одного пакета по умолчанию, но это не помогло. Я также заменил все защищенные/частные поля/классы общедоступными, все еще та же проблема.
Это линия, где я думаю, что он не:
JAXBContext context = JAXBContext.newInstance(PurchaseOrder.class);
Цените любую помощь. Благодарю. класс
PurchaseOrder:
<code>
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "PurchaseOrder", propOrder = {
"purchaseOptions"
})
@XmlRootElement(name = "PurchaseOrder")
public class PurchaseOrder {
@XmlElement(name = "PurchaseOptions")
public ArrayOfPurchaseOptionDescription purchaseOptions;
public ArrayOfPurchaseOptionDescription getPurchaseOptions() {
return purchaseOptions;
}
public void setPurchaseOptions(ArrayOfPurchaseOptionDescription value) {
this.purchaseOptions = value;
}
}
EDIT:
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "ArrayOfPurchaseOptionDescription", propOrder = {
"purchaseOptionDescription"
})
public class ArrayOfPurchaseOptionDescription {
@XmlElement(name = "PurchaseOptionDescription", nillable = true)
public List<PurchaseOptionDescription> purchaseOptionDescription;
public List<PurchaseOptionDescription> getPurchaseOptionDescription() {
if (purchaseOptionDescription == null) {
purchaseOptionDescription = new ArrayList<PurchaseOptionDescription>();
}
return this.purchaseOptionDescription;
}
}
Укажите код из класс 'PurchaseOrder.class'. –
Я обновил свое сообщение с помощью класса PurchaseOrder –