在批处理文件

时间:2018-05-18 09:06:30

标签: java batch-file cmd jvm

我有批处理脚本,它通过获取jvm参数来执行 TestRun 类,如下所示

java -cp "./lib/*;./statoil.jar" -DURI=localhost:8080 -DOWUser=abc -DOWPassword=abc123 -DpipelineName=EDMStatOil -Ddatabase=edm -DproviderName=141Provider -DdestinationName=110EDM -DproviderWellName=Serno Grad com.statoil.rts.test.TestRun 

但是在运行批处理脚本时遇到错误:

  

错误:无法找到或加载主类Grad

我知道它将Grad视为类文件。但是我们如何在用空格传递jvm参数时避免这个错误?

3 个答案:

答案 0 :(得分:2)

Java并不关心JVM参数的值是否有空格,但是终端会将-DproviderWellName=Serno Grad拆分为两个命令行参数并将它们传递给java可执行文件。

你必须在整个论点中加上引号:

java "-DproviderWellName=Serno Grad"

答案 1 :(得分:1)

在批处理文件中,首先尝试设置变量,然后将该参数传递给实际命令,如下所示。

set WellName="Serno Grad"

java -cp "./lib/*;./statoil.jar" -DURI=localhost:8080 -DOWUser=abc -DOWPassword=abc123 -DpipelineName=EDMStatOil -Ddatabase=edm -DproviderName=141Provider -DdestinationName=110EDM -DproviderWellName=%WellName% com.statoil.rts.test.TestRun

OR

set WellName="Serno Grad"

java -cp "./lib/*;./statoil.jar" -DURI=localhost:8080 -DOWUser=abc -DOWPassword=abc123 -DpipelineName=EDMStatOil -Ddatabase=edm -DproviderName=141Provider -DdestinationName=110EDM -DproviderWellName="%WellName%" com.statoil.rts.test.TestRun

在我的系统上,它们中的任何一个都能正常工作。

答案 2 :(得分:-1)

尝试使用转义字符-DproviderWellName =" \" Serno Grad \""

相关问题