2011-12-03 2 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) {} 

로그 파일 초기화를 사용하여 로그를 생성하고있다. 파일 작성기는 명령 행 인수를 사용하여 런타임에 사용자가 제공 한 로그 파일 경로에 의해 시작됩니다.

이클립스를 사용하여 프로그램을 실행하려고하면 로그가 생성되지만 실행 가능한 jar 파일을 실행할 때 로그가 생성되지 않습니다. 이유가 무엇일 수 있습니다.

+0

logFileWriter를 초기화 한 위치를 표시 할 수 있습니까? – chustar

+0

'private static void initLog() { \t \t \t \t 파일 logFileObj = 새로운 파일 (logFile); \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 환경에서 Eclipse에서이 실행 가능 jar를 작성 중입니다. 발사에서>를 선택 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(); 
      } 
     } 
    } 
}  

그런 프로젝트 -> 우측 클릭 -> 내보내기 -> Runnable를 항아리 :

은 전체 코드는 다음과 같습니다 방법 확실하지 난 당신의 코드를 기반으로 한 것입니다 구성 및 파일 위치 제공 - jar 파일이 생성> 마침

열기 명령 프롬프트 찾아보기,이 명령을 입력

java -jar exectest.jar 

(Java 경로가 설정되어 있고 내 항아리 이름을 exectest.jar로 지정 했으므로 jar 파일이있는 디렉토리와 동일한 디렉토리에 로그 파일이 생성되는 것을 볼 수 있습니다. 명령 프롬프트에서 프로세스를 생성하는 동안 스택 추적을 할 수 있습니다.

이제 코드를 추적하여 이와 비슷한 작업을 수행하는지 확인하고 결과를 게시 할 수 있습니다.

+0

고맙습니다 mprobhat ... 그게 .... 고맙습니다. .. :) – vaibought

+0

문제가 해결되었습니다 – vaibought

+0

가끔은 가정 하하를 참조하십시오 .. 듣고 다행 :) – mprabhat

관련 문제