2013-09-07 16 views
8

Javaコンソールの出力(System.out.printlnとそのilkで生成)をファイルにパイプしたいと思っています。私はJavaトレースを有効にするための優れた解決策hereを見つけましたが、これは私のためには機能しません(Mac OS XまたはWindowsの任意の場所にログファイルが表示されません)。私が知ることから、これはJava Web Startを使用しない単純なJavaアプリケーションを使用しているためです。どうすればJava Web Startを使用しないJavaコードでこれを行うことができますか?理想的には、コードを変更する必要がないソリューションが欲しいです。Java Consoleの出力をJava Web Startなしでファイルにパイプする方法はありますか。

+0

'System.setOut()' –

+0

私はコードを修正することなくそれを行うことができる方法はありますか?私はそれを再コンパイルせずに、既にコンパイルされたアプリケーションのためにしたいと思います。 – Thunderforge

答えて

17

これを行うにはJava Web Startは必要ありません。 System.outFileOutputStreamに設定するだけです。

fileNameあなたはパイプにしたいファイルのフルパスです
System.setOut(new PrintStream(new FileOutputStream(fileName))); 

public static void main(String[] args) throws Exception { //Read user input into the array 
    System.setOut(new PrintStream(new FileOutputStream("home.txt"))); 
    System.out.println("hello"); 
} 

は、現在の作業ディレクトリにhome.txtという名前のファイルにhello\nを書き込みます。

コードを変更できない場合は、Windows 7でcommand redirectionを使用してください。あなたはjarファイルを実行する必要がある場合

java YourMainClass > home.txt 

は、あなたがjava application launcher-jarオプションを使用することができます。

java -jar /your/path.jar > /output/file/path.txt 
+0

'YourMainClass'が何を参照しているのか分かりません。それはコンパイルされたjarファイルなのでしょうか? – Thunderforge

+0

@Thunderforge瓶がある場合は、jarコマンドを実行します。 'main()'クラスを持っているなら、直接実行してください。 –

+0

提案したように 'java'の代わりに' jar'コマンドを実行しようとしましたが、 'jar /Applications/Test.app/Contents/Resources/Java/jar_0.jar>〜/ Desktop/Test.txt'は'違法なオプション:/ 'そして受け入れ可能なパラメータについての情報がたくさんありますが、どれもすぐには関係がないようです。 – Thunderforge

1

Is there any way that I can do it without modifying code? I'd like to do it for an application that is already compiled.

あなたは、コードを変更せずにそれをしたい場合は、あなたの最良の選択肢はこれです:

$ java com.example.MyMainClass > filename 
+0

'$ java/Applications/Testを試しました。アプリケーション>〜/デスクトップ/ Test.txt'をターミナルのMac OS Xで実行していますが、「エラー:メインクラスを見つけられませんでした.Applications.Test.app」 – Thunderforge

+0

@Thunderforge - これは、パス名。ヒント:クラス名にはスラッシュがありません。これがあなたを混乱させている場合は、 'java'コマンドのマニュアル項目を読んでください。 –

+0

私は2年半前に思っていたことから、私は 'some.pkg.App'がOS Xアプリの名前であると混乱していました。 Windows .exe)。私はMac OS Xアプリケーションとしてパッケージ化されたJavaアプリケーションを実行していたので、これが私が試したことです。私はこの混乱を排除するためにあなたの例を明確にしました。 – Thunderforge

15

あなたは、コマンドラインから起動した場合、その後、あなたがstdoutとstderrをリダイレクト使用することができますファイルに次のように:あなたが持っている

java -jar application.jar >file.txt 2>&1 

application.jarにを交換するにアプリケーションのjarファイルを追加します。

関連する問題