【问题标题】:Java XX command line options unrecognized (e.g: -XX:+UseStringDeduplication, -XX:MaxGCPauseMillis)Java XX 命令行选项无法识别(例如:-XX:+UseStringDeduplication、-XX:MaxGCPauseMillis)
【发布时间】:2017-03-29 10:28:58
【问题描述】:

我试图在命令行上指定一些 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

返回

线程“主”org.apache.commons.cli.UnrecognizedOptionException 中的异常:无法识别的选项:-XX:+UseStringDeduplication

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

运行 Java 8,版本信息:

java版本“1.8.0_66” Java(TM) SE 运行时环境 (build 1.8.0_66-b17) Java HotSpot(TM) 64 位服务器 VM(内部版本 25.66-b17,混合模式)

感谢任何线索。

【问题讨论】:

    标签: java java-8


    【解决方案1】:

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

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

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

    【讨论】:

    • 现在,这是否是“简单的印刷错误”;-)
    • @GhostCat:是的,但我的解释不适合评论。不过,关闭问题仍然是一种选择……好吧,仔细想想,这不是一个简单的印刷错误,因为大多数键盘布局不直接支持 En Dash。也许是 Mac?
    • @Holger 善于观察细节和反应。我已经用 ASCII 连字符替换了 En Dash,并且不得不在语法开头移动 -XX 选项,这很有效。谢谢!
    • @ideaz 只是出于好奇:知道 En Dash 最初是如何到达那里的吗?你的键盘是恨你的婆婆送的?
    • @GhostCat 哈哈,完全是用户错误 - 可能是我之前阅读的 GC 调优文章中的错误复制意大利面。
    猜你喜欢
    • 1970-01-01
    • 2021-08-21
    • 2021-01-28
    • 2015-04-06
    • 2021-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多