1
我正在開發一個應用程序,需要調用一些Jenkins實例,爲此我使用jenkins-cli .jar
我可以使用命令行調用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.out
我知道我可以使用System.setOut()
。問題是我有其他線程同時記錄。 我讀here System.out是類加載器特定的,但我找不到任何其他信息。
有人知道一種方法來獲取罐子的標準輸出而不會干擾其他線程嗎?
其他答案是錯誤的:'System.out'絕對不是類加載器特定的。也許你可以使用'System.setOut'來讓'PrintStream'對調用者敏感,但是默認情況下它也不會這樣做。 –
啊我看到了,我希望那裏有一個簡單的解決方案。感謝您解決問題 – ElectronicManuel