[英]Loading VM arguments from a file when running a Java application on Windows
我希望能够从命令行运行Java程序VMArgumentsFromFile(在下面详细介绍),并在命令提示符中打印出“成功”。 命令行条目应如下所示:
java <vmarguments.txt> VMArgumentsFromFile
其中vmarguments.txt的内容是:
-Dvmopttest=Success
VMArgumentsFromFile.java的内容为:
public class VMArgumentsFromFile {
public static void main(String[] args) {
System.out.println(System.getProperty("vmopttest","Fail");
}
}
什么是正确的命令行输入才能使该程序在Windows系统上输出“成功”?
与此( 这里和此处 )有几个问题,但是都没有解决我正在介绍的这个特定案例。 请不要提供从Java程序内部解决此问题的答案(例如,将文件名作为vm参数发送,然后以编程方式设置其内容)。 在实践中,此问题的答案将用于向多个不同的应用程序发送相同的vm参数,这些参数将合并到一个文本文件中。
我今天发现的最佳解决方案是按如下方式创建cmd文件:
@echo off
set LIST=
for /F %%k in (vmarguments.txt) DO call :concat %%k
echo %LIST%
java %LIST% VMArgumentsFromFile
:concat
set LIST=%LIST% %1
goto :eof
这种方法要求文本文件中的vm参数用引号引起来,并在它们自己的行上。
这是基于以下答案的: 如何在Windows批处理文件中连接字符串?
如果您使用的是具有健全外壳的类UNIX系统,则可以执行以下操作:
java `cat vmarguments.txt` VMArgumentsFromFile
反引号告诉外壳程序执行其中包含的命令,然后用该命令的输出替换表达式(从反引号到反引号,包括两端)。
或者,您可以构建一个启动器应用程序,该应用程序读取文件并构建适当的命令行。 因此,您最终将运行以下内容:
launcher arguments.txt VMArgumentsFromFile
其中launcher
是您的启动器应用程序(可以是shell /批处理脚本或其他Java应用程序)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.