2013-08-23 12 views
1

저는 jdk 1.6을 사용 중이며 xml 메시지를 생성 할 수있는 하나의 프로그램을 개발했습니다.이 메시지는 잘 작동하며 genearate 할 수 있습니다. 유닉스 서버에 배포 할 때 jaxb.bind를 얻고있다. marshaller exception 유닉스에서와 같이 그들은 jdk 1.5를 사용했다. 내 xmlgenerated 클래스에서 필요한 패키지가 유닉스 서버의 jdk 1.5에서 사용할 수없는 JRE의 rt.jar을 패키지가 참조하고 있습니다. 이 문제를 어떻게 해결할 수 있습니까?유닉스 서버에 배포 할 때 Jaxb 예외가 발생했습니다.

예외이다 java.lang.NoClassDefFoundError가 : javax의/XML/바인딩/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()); 
} } 

`

감사 Ravindar

+0

그래서 jdk 1.5로 실행하는 데 문제가 있습니까? JAXB가 1.6까지 번들 된 것으로 생각하지 않기 때문에 1.5를 지원하려면 구현을 다운로드하여 응용 프로그램에 포함해야합니다. – DannyMo

+0

대니 감사합니다, 당신 말이 맞아요. –

답변

1

JAXB에서 문제가 발생했습니다. jdk 1.5에서 imlementing. 유닉스 서버에 배치 할 때 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> 
관련 문제