我有批处理脚本,它通过获取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参数时避免这个错误?
答案 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 \""