7

私は JAXB を初めて使用し、EclipseLink MOXy を使用してデフォルトのネームスペース プレフィックスを変更したいと考えています。私の package-info.java には、次のコード行があります。

@javax.xml.bind.annotation.XmlSchema (
namespace="http://namespace.mysite.com/",
xmlns = { 
    @javax.xml.bind.annotation.XmlNs(prefix="myns", 
               namespaceURI="http://namespace.mysite.com/")
},
elementFormDefault = javax.xml.bind.annotation.XmlNsForm.UNQUALIFIED
)
package com.core.mymodel;

そして、私の jaxb.properties ファイルには次の行があります。

javax.xml.bind.context.factory=org.eclipse.persistence.jaxb.JAXBContextFactory

eclipselink.jar を CLASSPATH に追加しました。package-info.java ファイルと jaxb.properties ファイルの両方がモデル クラスと同じパッケージにありますが、プログラムを実行すると、次のエラー メッセージが表示されます。

javax.xml.bind.JAXBException: Provider org.eclipse.persistence.jaxb.JAXBContextFactory        not found
- with linked exception:
[java.lang.ClassNotFoundException: org.eclipse.persistence.jaxb.JAXBContextFactory]
at javax.xml.bind.ContextFinder.newInstance(Unknown Source)
at javax.xml.bind.ContextFinder.find(Unknown Source)
at javax.xml.bind.JAXBContext.newInstance(Unknown Source)
at javax.xml.bind.JAXBContext.newInstance(Unknown Source)
at javax.xml.bind.JAXBContext.newInstance(Unknown Source)

EclipseLink バージョン 2.3.0 および 2.0.2 でこれを試しましたが、同じエラー メッセージが表示されます。何が問題なのか知っている人はいますか?

よろしくお願いします

4

2 に答える 2

4

jaxb.properties例外メッセージに基づいて、ファイルが正しいようです。

javax.xml.bind.JAXBException: Provider org.eclipse.persistence.jaxb.JAXBContextFactory        not found
- with linked exception:
[java.lang.ClassNotFoundException: org.eclipse.persistence.jaxb.JAXBContextFactory]
at javax.xml.bind.ContextFinder.newInstance(Unknown Source)
at javax.xml.bind.ContextFinder.find(Unknown Source)
at javax.xml.bind.JAXBContext.newInstance(Unknown Source)
at javax.xml.bind.JAXBContext.newInstance(Unknown Source)
at javax.xml.bind.JAXBContext.newInstance(Unknown Source)

それがクラスパス上にあることを確認するにorg.eclipse.persistence.jaxb.JAXBContextFactoryは、次を試してください。

JAXBContext jc = JAXBContextFactory.createContext("com.core.mymodel", null);

より基本的な確認を行うには、次を実行できます。

System.out.println(org.eclipse.persistence.Version.getVersion());

詳細については

于 2011-07-25T17:40:14.183 に答える