생성 된 스키마를 stdout으로 출력하고 싶습니다. 그래서 System.out을 SchemaOutputResolver의 outputStream으로 설정했습니다. StreamResult result = new StreamResult(System.out);
그러나 문 뒤에 : jc.generateSchema(outputResolver)
System.out이 콜백에서 닫히는 것을 피하는 방법
에서 System.out.println() 더 이상 작동하지 않습니다. 코드를 디버깅하여 System.out을 jc.generateSchema
메서드 뒤에 닫았습니다.
JAXBContext jc = JAXBContext.newInstance(SomeObject.class);
SchemaOutputResolver outputResolver = new SchemaOutputResolver() {
@Override
public Result createOutput(String namespaceUri, String suggestedFileName)
throws IOException {
StreamResult result = new StreamResult(System.out);
result.setSystemId(namespaceUri);
// return result
return result;
}
};
jc.generateSchema(outputResolver);
System.out.println("this String can't be output");
내 질문은, 어떻게 출력 jc.generateSchema
를 사용하여 System.out을 닫지 않고 stdout에 생성 된 스키마에?
StreamResult result = new StreamResult(new UncloseablePrintStream(System.out)));
완전히 검증되지 않은,하지만이 간단한 수 있습니다 :
고마워, 그게 내가 원하는거야. 비슷한 클래스를 썼지 만 System.out을 wrap 클래스에 할당하는 방법에 대해서는 전혀 모릅니다. :) 좋은 코드를 가져 주셔서 감사합니다. –