簡體   English   中英

無法從類中訪問超類

[英]cannot access superclass from class

我創建了一個簡單的java客戶端,它基於從XSD生成的類構建XML消息,然后將其感知到Web服務。 當我從我的工作站測試它時工作正常但是當我將類加載到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;
    }
}

編輯:

@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;
    }
}

我想你應該刪除XML類型名稱,如:

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
    "purchaseOptions"
})
@XmlRootElement(name = "PurchaseOrder")
public class PurchaseOrder {
...
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM