在java中,执行jar时是否可以知道指定的输出文件?

在java中,执行jar时是否可以知道指定的输出文件?,java,file,output,Java,File,Output,英语: 在java中,执行jar时是否可能知道指定的输出文件(无需解析参数)?例如,使用此命令: java -jar application.jar 1> output.log 2> error.err Java可以知道默认输出在output.log中,错误在error.err中 法兰西: 有没有可能是因为飞机起飞时没有参数 第5部分:执行命令的示例: java -jar application.jar 1> output.log 2> error.err 您将输出

英语: 在java中,执行jar时是否可能知道指定的输出文件(无需解析参数)?例如,使用此命令:

java -jar application.jar 1> output.log 2> error.err
Java可以知道默认输出在output.log中,错误在error.err中

法兰西: 有没有可能是因为飞机起飞时没有参数

第5部分:执行命令的示例:

java -jar application.jar 1> output.log 2> error.err 

您将输出重定向到文件的方式是在操作系统级别完成的,而不是在java级别完成的,因此不可能像您这样做

[Alernate way]

如果您显式地将文件名作为java arg发送到程序并手动更改系统输出流,那么这是唯一可行的方法

运行命令

java -jar application.jar output.log error.err
主类

public static void main(String[] args){
  // file names will be available as args[1] and args2[]
  String outputFileName = args[1];
  String errorOutputFileName = args[2];
  System.setOut(new PrintStream(new BufferedOutputStream(new FileOutputStream(args[1]))));
  System.setErr(new PrintStream(new BufferedOutputStream(new FileOutputStream(args[2]))));
  // ...

}

您想知道Main()方法中output.log和error.err文件名的名称吗?我能想到的唯一方法是所有特定于平台和/或涉及JNI的方法。甚至这些也可能不可靠。对于初学者,请参阅Ok,我将解析应用程序的参数以找到它们。。。谢谢