2013-10-23 2 views
0

나는 벽에 부딪쳤다. XSLT 변환을 수행하기 위해 Saxon 라이브러리를 사용하는 웹 응용 프로그램에서 작업하고 있습니다. 응용 프로그램은 단순히 콘솔에 출력물을 출력하는 콘솔 응용 프로그램 이었지만 웹에서 응용 프로그램을 제어하기로 결정했습니다.Console.SetOut이 작동하지 않으면 어떻게해야합니까?

웹 페이지로 출력되는 TextWriter 클래스를 작성하고 Console.SetOutConsole.SetError을 사용하여 내 콘솔 출력을 웹 페이지로 안내합니다.

그러나 Saxon은 Console.SetOut의 영향을받지 않는 Java 호환성 라이브러리를 사용하고 있습니다. 따라서 웹에서 응용 프로그램을 실행하면 내부 Saxon 오류가 웹 페이지에 나타나지 않습니다.

짧은 질문은 : 콘솔 텍스트가 출력되는 위치를 변경하고 작동하지 않는 Console.SetOut을 호출한다고 가정 해보십시오. 그 때 무엇?

답변

0

당신은 색슨 소스에 들어가서 조금 바꿔야 할 것처럼 들립니다.

0

Console.SetOut 및 Console.SetError가 작동하지 않는다는 것에 놀랐습니다. Saxon on .NET은 IKVMC를 사용하여 .NET으로 크로스 컴파일 된 OpenJDK 라이브러리를 사용하고 있으며 출력 스트림의 매핑이 이러한 메서드가 작동 할 것으로 기대합니다. 여기에 버그가 있다고 생각하면보고 할 곳은 saxonica.plan.io의 Saxonica 지원 사이트에 있으며 문제를 재현하는 예가 나와 있습니다.

그러나 Saxon 오류 메시지를 리디렉션하는 더 좋은 방법은 자신의 ErrorListener를 등록하는 것입니다. .NET Saxon API에서는이 작업을 직접 수행 할 수 없지만 XsltTransformer에서 Controller를 가져 와서 javax.xml.transform.ErrorListener 인터페이스 구현으로 setErrorListener 메서드를 호출하면됩니다.

+0

Jeroen Frijters는 Console.SetOut 및 Console.SetError가 IKVM 응용 프로그램의 Java 부분에서 System.out 및 System.err에 기록 된 데이터에 영향을 미치지 않는다고 확인했습니다. –

관련 문제