2014-03-28 28 views
0

時傳遞Java命令行參數我正在編寫一個簡單的批處理腳本來更快地執行遊戲(用於開發環境目的),但是我似乎無法將相應的命令行參數傳遞給可執行文件:在使用-cp

@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

看來,有您的路徑(最後^)和你的Main班結束之間沒有空格,所以你Main類是有效的-cp JVM參數的一部分。目前還沒有課,所以java仍然看到JVM參數。

嘗試在-cp值的最後一部分和net.minecraft.client.main.Main之後放一個空格,以便在命令行中分隔-cp值和您的類。

+0

也可能需要刪除類路徑中最後一個目標元素的最後冒號。 – GregHNZ

+0

奇怪的是,我周圍的新錯誤是「找不到主類'net.minecraft ... etc',但我只是將上面使用的1.7.5 jarfile扔進了jd-gui,它肯定存在。腳本錯了? – Rogue

+0

發現了另一個問題,用冒號代替分號 – Rogue