0

当我尝试将此参数传递给 Proguard 时,它会引发此异常:

java -Xms128M -Xmx256M -jar "../../../tools/proguard/proguard.jar" @game_specific.pro -libraryjars "C:/Program Files/Java/jdk1.5.0_22/jre/lib/rt .jar" 错误:期望类路径分隔符 ';' 在参数编号 3 中的 'Files/Java/jdk1.5.0_22/jre/lib/rt.jar 之前

这是由于文件名中的空格,我知道很多。我已经尝试过使用 " 和 ' 的各种变通方法,但唯一有效的是当我在路径中使用 progra~1 时。这对我来说不是一个可行的解决方案,因为这个命令应该能够在很多具有各种 Java 路径的不同计算机。

我究竟做错了什么 ?

4

1 回答 1

1

为了方便起见,ProGuard 接受任意分组的命令行参数,使用 shell 引号,例如:

java -jar proguard.jar "-keep public class * { public <methods>; }"

shell 将参数分组并吞噬引号。因此,必须再次引用包含空格的文件名,例如使用不同的引号:

java -jar proguard.jar "-injars 'some input.jar'"

配置文件中的选项不存在这种双引号问题。

ProGuard 手册中提到了这个问题。

于 2011-02-18T19:49:27.580 回答