无法识别 Java XX 命令行选项(例如 : -XX:+UseStringDeduplication, -XX:MaxGCPauseMillis)

标签 java java-8

我正在尝试在命令行上指定一些 GC 调整选项,但出于某种原因一直遇到“无法识别的选项”错误。

java -Dproperty1=value -Dproperty2=value2 -cp ./some/jarFile1.jar:./some/jarFile2.jar com.xyz.ClassFile -c /path/to/a/file –XX:+UseG1GC -XX:+UseStringDeduplication -XX:MaxGCPauseMillis=200

返回

Exception in thread "main" org.apache.commons.cli.UnrecognizedOptionException: Unrecognized option: -XX:+UseStringDeduplication

如果我删除了 StringDeduplication,则与 XX:MaxGCPauseMillis 选项相同。

运行 Java 8,版本信息:

java version "1.8.0_66"
Java(TM) SE Runtime Environment (build 1.8.0_66-b17)
Java HotSpot(TM) 64-Bit Server VM (build 25.66-b17, mixed mode)

感谢任何线索。

最佳答案

输入字符时要小心。 –XX:+UseG1GC 之前的破折号不是 ASCII hyphen/minus ,但是 “En Dash”性格。

如果您仔细查看问题的浏览器 View ,您可能会注意到长度和垂直位置的差异,例如与 -XX:+UseStringDeduplication 选项进行比较时。但是,这取决于实际字体,并且在您输入命令行的编辑器/控制台中,两个字符看起来相同的可能性不大。

对于 java 命令行选项,您必须始终使用 ASCII 连字符/减号字符 (U+002D),这应该是在普通键盘上按 - 时的默认值键盘。

关于无法识别 Java XX 命令行选项(例如 : -XX:+UseStringDeduplication, -XX:MaxGCPauseMillis),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40611555/

相关文章:

java - 使用构造函数参数 Autowiring Bean

java - 如何从 ByteBuffer 解码 OGG vorbis 数据?

java - lambda 实际上是一个匿名类吗?

java - 如何在 Spring REST Controller 中获取原始 JSON 主体?

Java if/else 与比较字符串

java - 泛型 <? super> 通配符在带有方法引用或 lambda 的 java 1.8 中不起作用

java - 流 : Calculate the difference of totals in one go

java - 使用 java.time 根据时区转换时间

java - 一个类拥有另一个类的实例时,JVM 初始化顺序是什么

java - 作为Eclipse应用程序运行会导致JVM崩溃- “EXCEPTION_ACCESS_VIOLATION”