使用-cp时传递Java命令行参数

时间:2014-03-28 00:04:03

标签: java command-line-arguments

我正在编写一个简单的批处理脚本来更快地执行游戏(用于开发环境目的),但是我似乎无法将相应的命令行参数传递给可执行文件:

@ECHO OFF

set USERNAME=Testing
set MCDIR=%APPDATA%/.minecraft/
set GAMEDIR=%MCDIR%/versions/1.7.5/
set NATIVES=%GAMEDIR%/natives/

java -client -Xmx512M -Xms512M ^
-Djava.library.path=%NATIVES% ^
-cp %GAMEDIR%/1.7.5.jar:^
%MCDIR%/libraries/java3d/vecmath/1.3.1/vecmath-1.3.1.jar:^
%MCDIR%/libraries/net/sf/trove4j/trove4j/3.0.3/trove4j-3.0.3.jar:^

##etc... lots of libs

%MCDIR%/libraries/org/lwjgl/lwjgl/lwjgl_util/2.9.1/lwjgl_util-2.9.1.jar:^
%MCDIR%/libraries/org/lwjgl/lwjgl/lwjgl-platform/2.9.1/lwjgl-platform-2.9.1-natives-windows.jar:^
%MCDIR%/libraries/net/java/jinput/jinput-platform/2.0.5/jinput-platform-2.0.5-natives-windows.jar:^
net.minecraft.client.main.Main --username=%USERNAME% --version 1.7.5 --gameDir %MCDIR% --assetsDir %MCDIR%/assets --userProperties {} --accessToken Offline

pause

然而,这个小脚本似乎在任何参数超越client.main.Main的瞬间失败,有效地将其视为JVM参数而不是命令行程序参数。在使用-cp而不是-jar来调用java中的程序时,是否有不同的方法可以执行此操作?如果没有,我做错了什么?

1 个答案:

答案 0 :(得分:1)

您的路径末尾(最后一个^)和Main类之间似乎没有空格,因此您的Main类实际上是{{1}的一部分JVM参数。还没有类,所以-cp仍然可以看到JVM args。

尝试在java值的最后一部分和-cp之后添加一个空格,以便在命令行中将net.minecraft.client.main.Main值与您的类分开。