传递包含空格的 Jvm 属性(通过 -D)

passing Jvm properties (via -D) that contain spaces

我有一个 docker 应用程序,它从命令行在内部运行一个 java jar。我已将 docker 容器设置为通过 "other java options",在这种情况下,我想通过以下内容:

jdk.certpath.disabledAlgorithms=MD2, MD5, RSA keySize < 128, DSA keySize < 128, EC keySize < 128

我希望能够通过 -Djdk.etc 传递它,但空格似乎真的会把事情搞砸。空格 java 抱怨它不知道如何处理 MD5 和更高版本("Error: Could not find or load main class MD5,"。没有空格,我得到关于 keySize< 是未知主 class.

有人可以帮我传递这个参数的正确方法吗?我尝试用引号将整个内容括起来,但结果是一样的。

你应该只包围变量值 -Dvar="a < b" 对我有用。

在这里找到更好的解释:http://mail.openjdk.java.net/pipermail/jmh-dev/2015-March/001768.html

建议的两个选项是。

$ java -jar benchmarks.jar -jvmArgs "-Dx=12 -Dy=\"one two\""
$ java -jar benchmarks.jar -jvmArgs "-Dx=12" -jvmArgs "-Dy=one two"

也用 Maven 尝试了第二个版本。有效。