我想将 Java 控制台输出(由System.out.println
及其同类生成)通过管道传输到文件中。我在这里找到了一个很好的解决方案来启用 Java 跟踪,但这对我不起作用(在 Mac OS X 或 Windows 上的任何位置都没有显示日志文件)。据我所知,这是因为我使用的是没有 Java Web 启动的普通 Java 应用程序。那么如何使用不使用 Java web start 的 Java 代码来做到这一点呢?理想情况下,我想要一个不需要修改代码的解决方案。
问问题
38844 次
4 回答
22
如果你从命令行启动它,那么你可以使用重定向 stdout 和 stderr 到文件中,如下所示:
java -jar application.jar >file.txt 2>&1
您必须将 application.jar 替换为应用程序的 jar 文件。
于 2013-09-07T03:24:06.040 回答
16
您不需要 Java web start 来执行任何这些操作。只需将 设置System.out
为FileOutputStream
.
System.setOut(new PrintStream(new FileOutputStream(fileName)));
fileName
您要通过管道传输到的文件的完整路径在哪里。
public static void main(String[] args) throws Exception {
System.setOut(new PrintStream(new FileOutputStream("home.txt")));
System.out.println("hello");
}
这将写入当前工作目录中hello\n
命名的文件。home.txt
如果您无法修改代码,请在 Windows 7 上使用命令重定向。
java YourMainClass > home.txt
如果需要运行 jar,可以使用java application launcher-jar
的选项。
java -jar /your/path.jar > /output/file/path.txt
于 2013-09-07T03:09:11.297 回答
1
有什么方法可以在不修改代码的情况下做到这一点?我想为已经编译的应用程序做这件事。
如果您想在不更改代码的情况下执行此操作,那么您最好的选择是:
$ java com.example.MyMainClass > filename
于 2013-09-07T03:13:50.477 回答
0
如果您想在后台运行问题,请执行以下操作 -
nohup java -jar yourprogram.jar > log.txt 2>&1 &
于 2018-07-07T18:27:55.567 回答