繁体   English   中英

在Windows上运行Java应用程序时从文件加载VM参数

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM