9

EclipseLinkのJAXBの実装からいくつかの非標準の拡張機能を使用しています。その実装を有効にするには、jaxb.propertiesを使用して構成する必要があります。うまく機能します。

ただし、ビルドエラーのため、プロパティファイルが適切な場所に含まれていなかったため、デフォルトのJAXBが使用され、エラーなしでXMLファイルの解析が続行され、非標準の拡張子が無視され、動作しないBean。

これをより堅牢にするために、プロパティファイルを削除し、コードでコンテキスト構成を指定したいと思います。アノテーションがあるため、コンパイル時のEclipseLinkへの依存関係はすでにあり、展開時にこの部分を構成する必要はありません(実際、何がうまくいかないかを確認するために、構成する必要はありません)。

4

1 に答える 1

14

次の手順を実行して、ファイルJAXBContextなしでEclipseLink JAXB(MOXy)を取得できます。jaxb.properties

import java.io.File;

import javax.xml.bind.JAXBContext;
import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller;

import org.eclipse.persistence.jaxb.JAXBContextFactory;

public class Demo {

    public static void main(String[] args) throws Exception {
        //JAXBContext jc = JAXBContext.newInstance(Animals.class);
        JAXBContext jc = JAXBContextFactory.createContext(new Class[] {Animals.class}, null);

        Unmarshaller unmarshaller = jc.createUnmarshaller();
        File xml = new File("src/forum6871469/input.xml");
        Animals animals = (Animals) unmarshaller.unmarshal(xml);

        Marshaller marshaller = jc.createMarshaller();
        marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
        marshaller.marshal(animals, System.out);
    }

}
于 2011-08-06T18:33:54.670 に答える