2

XMLスキーマに対してjaxbオブジェクトがあります。そのxmlスキーマは異なるルート要素を持つことができます。これはメインプロジェクトで完全に機能しています。それらの生成されたオブジェクトに基づいて、私はいくつかのテストケースを書き込もうとしています。

JAXBContextを取得するために次のコードを書きました

JAXBContext jaxbContext = JAXBContext.newInstance("com.store.web.ws.v1.model");

そして私は次の例外を取得します

com.sun.xml.bind.v2.runtime.IllegalAnnotationsException: 1 counts of IllegalAnnotationExceptions
java.lang.StackTraceElement does not have a no-arg default constructor.
    this problem is related to the following location:
        at java.lang.StackTraceElement
        at public java.lang.StackTraceElement[] java.lang.Throwable.getStackTrace()
        at java.lang.Throwable
        at java.lang.Error
        at public java.lang.Error com.store.web.ws.v1.model.ObjectFactory.createError()
        at com.store.web.ws.v1.model.ObjectFactory

    at com.sun.xml.bind.v2.runtime.IllegalAnnotationsException$Builder.check(IllegalAnnotationsException.java:106)
    at com.sun.xml.bind.v2.runtime.JAXBContextImpl.getTypeInfoSet(JAXBContextImpl.java:466)
    at com.sun.xml.bind.v2.runtime.JAXBContextImpl.<init>(JAXBContextImpl.java:298)
    at com.sun.xml.bind.v2.runtime.JAXBContextImpl.<init>(JAXBContextImpl.java:141)
    at com.sun.xml.bind.v2.runtime.JAXBContextImpl$JAXBContextBuilder.build(JAXBContextImpl.java:1157)
    at com.sun.xml.bind.v2.ContextFactory.createContext(ContextFactory.java:145)
    at com.sun.xml.bind.v2.ContextFactory.createContext(ContextFactory.java:236)
    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:128)
    at javax.xml.bind.ContextFinder.find(ContextFinder.java:277)
    at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:372)
    at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:337)
    at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:244)
    at com.store.web.ws.v1.resource.RequestInfo.main(RequestInfo.java:171)

ただし、コンテキスト行を次のように変更した瞬間

JAXBContext jaxbContext = JAXBContext.newInstance(BookType.class);

以前の質問SEVERE: unexpected element (uri:"", local:"book"). Expected elements are (none)に基づいて理解できる次の例外が発生します

誰かがここで私を助けることができますか?パッケージ名に基づいてコンテキストを作成したい。

4

1 に答える 1

3

Errorこれは、スキーマから生成されたクラスの1つがと呼ばれ、コンパイラがjava.lang.Errorクラスよりもクラスを選択したように見えますcom.store.web.ws.v1.model.Error。明示的に入れてみてください

import com.store.web.ws.v1.model.Error;

上部にObjectFactory.javaあり、それを再コンパイルするか、完全修飾されたクラス名を使用するようにコードを編集することに失敗します。

public com.store.web.ws.v1.Error createError() {
  return new com.store.web.ws.v1.Error();
}

(または、クラス名を変更し、を使用して正しい要素名に再マップします@XmlRootElement(name="Error")

于 2012-10-19T16:31:30.053 に答える