Java 运行可执行jar时打印写入程序不工作

Java 运行可执行jar时打印写入程序不工作,java,Java,我创建了一个备份程序。程序运行良好,但日志未生成。我使用三种方法生成日志 System.out.println(message); try { if(logFileWriter != null){ logFileWriter.write(message); logFileWriter.newLine(); logFileWriter.flush();

我创建了一个备份程序。程序运行良好,但日志未生成。我使用三种方法生成日志

System.out.println(message);

        try {

            if(logFileWriter != null){

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

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

        } catch (IOException e1) {}
日志文件初始值设定项:

private static void initLog() { 
    File logFileObj = new File(logFile); 
    try { 
        FileWriter fileWriter = new FileWriter(logFileObj); 
        logFileWriter = new BufferedWriter(fileWriter); 
    } catch (IOException e) { 
        e.printStackTrace(); 
    } 
}
这里的消息是我要记录的消息。文件编写器由用户在运行时使用命令行参数指定的日志文件路径启动


当我试图使用eclipse运行程序时,日志正在创建,但当我运行可执行jar文件时,没有日志正在创建。原因可能是什么。

假设:您在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();
            }
        }
    }
}    
然后project->右键单击->导出->运行Jar->在启动配置中选择JustPrint并给出文件位置->完成

然后打开命令提示符浏览创建jar文件的位置,然后键入以下命令

java -jar exectest.jar 
(考虑到Java路径已设置,并且我将我的jar名称命名为exectest.jar,我可以看到日志文件也在jar文件所在的同一目录中创建,在我的命令提示符下,我可以在创建进程时stacktrace


现在,您可以跟踪您的代码,看看您是否执行了类似或不同的操作,发布您的发现。

您可以显示您在哪里初始化了logFileWriter吗?
private static void initLog(){File logFileObj=new File(logFile);尝试{FileWriter FileWriter=new FileWriter(logFileObj);logFileWriter=new BufferedWriter(fileWriter);}catch(IOException e){e.printStackTrace();}}
logFileWriter
一个“全局”对象吗?这可能是由于文件路径或权限的原因,您的代码没有引发任何异常吗?您看不到任何错误,因为catch块为空,请添加e1.printStackTrace()并运行您的代码