1

私はjdk 1.6を使用しており、xmlメッセージを生成できる1つのプログラムを開発しました。これは正常に機能し、生成することができます。UNIXサーバーにデプロイすると、jaxb.bindが取得されます。UNIX の場合と同様に、jdk 1.5 を使用していたマーシャラー例外。私のxml generatedクラスでは、パッケージはJREでrt.jarを参照していますが、必要なパッケージはUNIXサーバーのjdk 1.5では利用できません。どうすればこの問題を解決できるでしょうか。

例外は次のとおりです: java.lang.NoClassDefFoundError: javax/xml/bind/Marshaller

コードは次のとおりです。

`

public JaxbXmlMessageGenerator() {
    try {
        jaxbContext = JAXBContext.newInstance("generated");
        xmlOutputFactory = XMLOutputFactory.newFactory();
    } catch (Exception e) {
        e.printStackTrace();
    }

}

public static void main(String[] args) {
    JaxbXmlMessageGenerator jaxbXmlMessageGenerator = new JaxbXmlMessageGenerator();
    System.out.println("-- The Transformed XML Message -- \n"+jaxbXmlMessageGenerator.getMessage());
}

public final String getMessage() {
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    try {
        Marshaller jaxbMarshaller = jaxbContext.createMarshaller();
        jaxbMarshaller.setProperty("jaxb.encoding", "UTF-8");
        jaxbMarshaller.setProperty(Marshaller.JAXB_FRAGMENT, true);

        XMLStreamWriter xmlStreamWriter = xmlOutputFactory
                .createXMLStreamWriter(baos, (String) jaxbMarshaller
                        .getProperty(Marshaller.JAXB_ENCODING));
        xmlStreamWriter.writeStartDocument((String) jaxbMarshaller
                .getProperty(Marshaller.JAXB_ENCODING), "1.0");
        jaxbMarshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);

        File file=new File("D:\\eclipse\\file.xml");
        ObjectFactory factory = new ObjectFactory();
        BaNCSLimitRQPT rqpt = factory.createBaNCSLimitRQPT();
        MsgDtlT msgDtlT = factory.createMsgDtlT();
        msgDtlT.setMsgLimitType("FC");
        msgDtlT.setMsgOUID("0507");
        msgDtlT.setMsgTxnCur("USD");
        msgDtlT.setMsgUnBlckInd("2");
        msgDtlT.setMsgBlckExpiryDays("2");
        msgDtlT.setMsgBlckExpiryDayType("1");
        msgDtlT.setMsgTenor("180");
        msgDtlT.setMsgLimitId("1234");

        rqpt.setMsgDtl(msgDtlT);

        JAXBElement<BaNCSLimitRQPT> element = factory
                .createBaNCSLimitRQP(rqpt);         
        jaxbMarshaller.marshal(element, file);
        jaxbMarshaller.marshal(element, System.out);            
        xmlStreamWriter.writeEndDocument();
        xmlStreamWriter.close();            
    } catch (Exception e) {
        e.printStackTrace();
    }       
    return new String(baos.toByteArray());
} } 

`

よろしく、 ラヴィンダー

4

1 に答える 1

1

jdk 1.5 の実装で JAXB の問題に直面しました。UNIXサーバーへのデプロイ時のJaxb例外

以下に示すように、Mavenプロジェクトで同じことを達成しました。

<plugin> 
                            <groupId>org.jvnet.jaxb2.maven2</groupId> 
                            <artifactId>maven-jaxb2-plugin</artifactId> 
                            <version>0.8.1</version> 
                            <dependencies> 
                                    <dependency> 
                                            <groupId>javax.xml.bind</groupId> 
                                            <artifactId>jaxb-api</artifactId> 
                                            <version>2.1</version> 
                                    </dependency> 
                            </dependencies> 
                            <executions> 
                                    <execution> 
                                            <id>xsd-generate</id> 
                                            <goals> 
                                                    <goal>generate</goal> 
                                            </goals> 
                                            <configuration> 
                                                    <generateDirectory>src/main/java</generateDirectory> 
                                                    <generatePackage>com.db.accounting.application.server.jaxbautogenerated</generatePackage> 
                                                    <schemaDirectory>src/main/resources</schemaDirectory> 
                                                    <includeSchemas> 
                                                            <include>accounting.xsd</include> 
                                                    </includeSchemas> 
                                                    <extension>true</extension> 
                                                    <plugins> 
                                                            <plugin> 
                                                                    <groupId>org.jvnet.jaxb2_commons</groupId> 
                                                                    <artifactId>jaxb2-basics</artifactId> 
                                                                    <version>0.5.3</version> 
                                                            </plugin> 
                                                    </plugins> 
                                            </configuration> 
                                    </execution> 
                            </executions> 
                    </plugin> 
于 2013-12-12T09:11:54.927 に答える