2011-12-03 26 views
0

バックアッププログラムを作成しました。プログラムは素晴らしいですが、ログは生成されません。ここでは、メッセージが、私がログに記録するメッセージである実行可能なjarファイルを実行しているときにライターが動作しない

private static void initLog() { 
    File logFileObj = new File(logFile); 
    try { 
     FileWriter fileWriter = new FileWriter(logFileObj); 
     logFileWriter = new BufferedWriter(fileWriter); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
} 

:私は三つの方法、

System.out.println(message); 

     try { 

      if(logFileWriter != null){ 

       logFileWriter.write(message); 
       logFileWriter.newLine(); 
       logFileWriter.flush(); 
      } 

      Runtime.getRuntime().exec("echo " + message); 

     } catch (IOException e1) {} 

ログファイルの初期化子を使用してログを生成しています。ファイルライターは、コマンドライン引数を使用して、実行時にユーザーが指定したログファイルパスによって開始されます。

私はEclipseを使用してプログラムを実行しようとしていますが、ログは作成されていますが、実行可能なjarファイルを実行するとログは作成されません。理由は何か。

+0

logFileWriterを初期化した場所を表示できますか? – chustar

+0

'プライベートの静的な無効のinitLog(){ \t \t \t \tファイルlogFileObj =新しいファイル(ログファイル)。 \t \t \t \t試み{ \t \t \t \t \t \tてFileWriterてFileWriter =新しいてFileWriter(logFileObj)。 \t \t \t \t \t \t logFileWriter =新しいBufferedWriterの(てFileWriter)。 \t \t \t \t \t}キャッチ(IOExceptionを電子){ \t \t \t \t \t \t e.printStackTrace(); \t \t} \t \t \t} ' – vaibought

+0

は' logFileWriter' "グローバル" オブジェクトですか? – chustar

答えて

2

仮定:あなたはWindows上にあり、この実行可能なjarをEclipseから作成しています。打ち上げで>を選択JustPrint -

package com.mumz.test.executable.jar; 

import java.io.BufferedWriter; 
import java.io.File; 
import java.io.FileWriter; 
import java.io.IOException; 

public class JustPrint {  
    private static String   logFile = "backooopLog.txt"; 
    private static BufferedWriter logFileWriter; 
    private static void initLog() { 
      File logFileObj = new File(logFile); 
     try { 
      FileWriter fileWriter = new FileWriter(logFileObj); 
      logFileWriter = new BufferedWriter(fileWriter); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 

    /** 
    * @param args 
    */ 
    public static void main(String[] args) { 
     initLog(); 
     String message = "hello word"; 
     System.out.println(message); 
     try { 
      if (logFileWriter != null) { 
       logFileWriter.write(message); 
       logFileWriter.flush(); 
      } 
      Runtime.getRuntime().exec("echo " + message); 
     } catch (IOException e1) { 
      e1.printStackTrace(); 
     } finally{ 
      try { 
       logFileWriter.close(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
     } 
    } 
}  

その後プロジェクト - >右クリック - > export-> Runnableをジャー:

は、あなたの完全なコードは次のようになりますかわからない私はあなたのコードに基づいて、何をしたかであります設定とファイルの場所与える - jarファイルが作成されました> [完了

その後オープンコマンドプロンプトの閲覧を、このコマンドを入力し

java -jar exectest.jar 

(Javaパスが設定されていて、jarファイル名がexectest.jarであることを確認すると、jarファイルと同じディレクトリにログファイルが作成されているのがわかります。

これで、コードをトレースして、このようなやり方があるかどうかを確認し、結果を投稿できます。

+0

ありがとうmprobhat ... thats仕事....ありがとうございます。 .. :) – vaibought

+0

問題は解決されました – vaibought

+0

時々仮定を参照してくださいhaha ..それを聞いてうれしい:) – mprabhat

関連する問題