2011-12-03 71 views
0

我创建了一个备份程序。程序运行良好,但日志没有生成。打印作家不能在运行可执行文件的情况下运行

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

'private static void initLog(){ \t \t \t \t File logFileObj = new File(logFile); \t \t \t \t尝试{ \t \t \t \t \t \t FileWriter的FileWriter的新=的FileWriter(logFileObj); \t \t \t \t \t \t logFileWriter = new 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。

不知道你的完整代码的样子,这是基于你的代码我所做的:

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(); 
      } 
     } 
    } 
}  

然后项目 - >右键单击 - >导出 - >运行的JAR - >选择JustPrint中推出配置,并为文件位置 - >完成

然后打开命令提示浏览其中jar文件被创建,然后输入此命令

java -jar exectest.jar 

(考虑到Java路径的设置,我给我的jar名称命名为exectest.jar,我可以看到在jar文件所在的同一目录中也创建了日志文件,在我的命令提示符下,我可以在创建过程时进行堆栈跟踪。

现在,你可以跟踪你的代码,看看你是否做了这样或不同的事情,发布你的发现。

+0

非常感谢mprobhat ...多数民众赞成在工作....非常感谢你。 .. :) – vaibought

+0

问题已解决 – vaibought

+0

有时看到假设工作哈哈..很高兴听到:) – mprabhat

相关问题