JAXBを使用する場合、常にObjectFactoryクラスが必要ですか?
それがないと、この例外が発生します。
javax.xml.bind.JAXBException: "com.a.b.c"にObjectFactory.classまたはjaxb.indexが含まれていません
I gather ObjectFactoryはやり過ぎかもしれません。しかし、この例外を考えると、私はあなたがそれを必要としていると思います..しかし、理由がわかりませんか?
JAXBContext.newInstance(String)
ファクトリメソッドを使用すると、その例外が発生します。このメソッドでは、パッケージ名を引数として渡します。これdoesObjectFactory
が存在する必要があります。そうでない場合、JAXBはどのクラスを処理するかを認識しません。
ObjectFactory
がない場合は、代わりにJAXBContext.newInstance(Class...)
を実行する必要があります。代わりに、注釈付きクラスの明示的なリストを渡してコンテキストに追加します。
ObjectFactoryの代わりに、Javaクラスの新しい行区切りリストを含むテキストファイルであるjaxb.indexファイルを含めることができます。
Jaxb.indexファイルの使用例については、以下を参照してください。
Springを使用していて、変更する必要がありました
Jaxb2Marshaller mlr = new Jaxb2Marshaller();
mlr.setContextPaths("","");
に
Jaxb2Marshaller mlr = new Jaxb2Marshaller();
mlr.setPackagesToScan("","");