2009-07-06 9 views
0

私は必要なメインクラスを持つjarを含むjarのリストを持っています。 私はそれをメインクラスを実行しよう:runtomeの間に他のメインクラスを実行してコンソール出力を取得する方法は?

public static void runCommandlineMain(String classPathFile, String args[]) throws Exception{ 
    URL[] urls = getJarUrls(classPathFile); 
    URLClassLoader classLoader = new URLClassLoader(urls); 

    Class<?> clazz = classLoader.loadClass("liquibase.commandline.Main"); 
    Method main = clazz.getMethod("main", String[].class); 
    main.invoke(null, new Object[]{args}); 
} 

をしかし、実行した後、私はフォローしました:

Process finished with exit code -1 

、より何を。 どうすれば解決できますか?そして、このクラスからコンソールを取り出す方法は?

答えて

0

最初の質問はあまりありませんでした。

しかし、あなたの2番目の質問に答えるために:「どのようにコンソール出力を得るか」

はStreamGobblerを試しhere

0

私は疑問を約すぎ何であるかわからないんだけど、投稿によると出力をキャプチャする必要のあるプロセスは、別のスレッドで実行されます。このシナリオでは、Sytem.out(またはそれぞれSystem.err)ストリームをリダイレクトできるだけです。メインクラスを呼び出すと、その出力は、カスタムOutputStreamにリダイレクトされるはずです前

コール

System.setOut(new PrintStream(your-output-stream)); 
System.setErr(new PrintStream(your-output-stream)); 

関連する問題