일부 젠킨스 인스턴스를 호출해야하는 응용 프로그램을 개발 중입니다. jenkins-cli .jar를 사용하고 있습니다.
쉽게 추출 할 수 있도록 명령 줄을 사용하여 jar 파일을 호출 할 수 있습니다. 그 출력. 그렇다면 예외를 파싱해야합니다.
제대로 지금은 반사를 통해 병의 주요 메소드를 호출하고 예외 처리하려면 :별도의 Classpath를위한 Java 별도의 System.out
URLClassLoader jenkinsClassloader = new URLClassLoader(new URL[]{"UrlToJenkins-Cli.jar"}, getClass().getClassLoader());
Class<?> jenkinsCli = Class.forName ("hudson.cli.CLI", false, jenkinsClassloader);
Method mainMethod = jenkinsCli.getDeclaredMethod("main", String[].class);
mainMethod.invoke (null, (Object) commandArray);
을하지만 지금은 어떻게 든 내가 System.setOut()
을 사용할 수 있습니다 알고있는 항아리가 인쇄
를 System.out에 출력을 얻을 필요 . 거기에 문제가 다른 스레드가 simultanious 로깅을 가지고있다. here System.out이 클래스 로더와 관련이 있다고 읽었지만 이에 대한 추가 정보를 찾을 수 없습니다.
누군가 다른 스레드에서 방해받지 않고 jar 파일의 stdout을 얻는 방법을 알고 있습니까?
다른 답변이 잘못되었습니다. 'System.out'은 분명히 클래스 로더와 관련이 없습니다. 아마도'System.setOut'을 사용하여'PrintStream'이 호출자에 민감한 것일 수도 있지만, 기본적으로 그렇게하지는 않습니다. –
아하나, 나는 쉬운 해결책이 있기를 바랍니다. 문제를 해결해 주셔서 감사합니다. – ElectronicManuel