【问题标题】:Passing Java command-line arguments when using -cp使用 -cp 时传递 Java 命令行参数
【发布时间】:2014-03-28 08:10:21
【问题描述】:

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

@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 中调用程序时,是否有不同的方法来执行此操作?如果没有,我做错了什么?

【问题讨论】:

    标签: java command-line-arguments


    【解决方案1】:

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

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

    【讨论】:

    • 删除类路径中最后一个预期元素上的最后一个冒号可能也是值得的。
    • 奇怪,我的新错误是“找不到主类net.minecraft...etc,但我只是将上面使用的1.7.5 jarfile扔到jd-gui中,它肯定在那里。还有吗?脚本有问题?
    • 发现另一个问题,使用冒号而不是分号
    猜你喜欢
    • 2011-03-29
    • 1970-01-01
    • 2016-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-11
    • 1970-01-01
    相关资源
    最近更新 更多