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
그래서 jdk 1.5로 실행하는 데 문제가 있습니까? JAXB가 1.6까지 번들 된 것으로 생각하지 않기 때문에 1.5를 지원하려면 구현을 다운로드하여 응용 프로그램에 포함해야합니다. – DannyMo
대니 감사합니다, 당신 말이 맞아요. –