私はjenkins-cli .jarを使用しているいくつかのJenkinsインスタンスを呼び出す必要があるアプリケーションを開発しています
私は簡単にコマンドラインを使用してjarファイルを呼び出すことができますその出力。しかし、私は自分自身で例外を解析する必要があります。独立したクラスパス用の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()
:適切に私は今、リフレクション経由で瓶のmainメソッドを呼び出しています例外を処理する
。そこに問題があるのは、私は他のスレッドが同時に覚えているということです。 私はhereを読んでいますが、System.outはクラスローダー固有のものですが、これに関する追加情報は見つかりませんでした。
誰かが他のスレッドから妨害されることなく、瓶の標準出力を得る方法を知っていますか?
それ以外の答えは間違っています: 'System.out'は、明らかにクラスローダ固有ではありません。おそらく 'System.setOut'を使って' PrintStream'が呼び出し側を敏感にしているかもしれませんが、デフォルトではそうしません。 –
ああ、私は簡単な解決策があることを願っています。物事をクリアしていただきありがとうございます – ElectronicManuel