如何阻止Java程序参数被误认为VM参数?

时间:2014-12-02 15:54:12

标签: java batch-file

在bat文件中我有以下内容:

java -Ddatabase.host=127.0.0.1 -Xms128M -Xmx1024M com.temp.util.manual.serial.Assignment -folder C:\temp\ -destination C:\temp\out.csv

-folder-destination参数应该被传递给被调用的Assignment类的main方法,但是它们被解释为VM Args。

我试着在params周围加上引号无济于事,搜索没有显示答案。

我收到以下错误:

Unrecognized option: -'destination'
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.
Press any key to continue . . .

@echo off
setlocal EnableDelayedExpansion EnableExtensions 
set FILETYPE=%~n0
set CLASSPATH=jar1.jar
set CLASSPATH=%CLASSPATH%;anotherjar.jar
echo %CLASSPATH%
java -DjobName=%FILETYPE% -Ddatabase.host=127.0.0.1 -Ddatabase.name=db1 -Ddatabase.username=user1 -Ddatabase.password=password1 -Xms128M -Xmx1024M com.temp.util.manual.serial.Assignment -folder C:\\temp\\ -destination C:\\temp\\out.csv
call Cleanup.bat
endlocal

2 个答案:

答案 0 :(得分:2)

我认为你的问题更多地与传入变量有关。 删除 EnableDelayedExpansion EnableExtensions

答案 1 :(得分:0)

命令java具有以下语法:

java [ options ] class [ arguments ]
java [ options ] -jar file.jar [ arguments ]

所以在你的情况下(类)似乎找不到类。可能是由于缺少类路径。

java -cp . ... com.temp.util.manual.serial.Assignment ...

最好不要依赖CLASSPATH变量,使用-jar并依赖META-INF / MANIFEST.MF。