gpt4 book ai didi

java - 测试 Java 是否支持 -XX 选项

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:23:17 25 4
gpt4 key购买 nike

我们在工作中使用各种旧版本的 Java 1.6,由于我无法控制的各种原因无法更新。

一些支持-XX:ReduceInitialCardMarks ,有些则不会,如果您尝试使用不受支持的选项则退出。

我想要一个 shell 脚本,它使用 -XX:ReduceInitialCardMarks 选项调用 java(如果可用),否则不使用。

我尝试过/考虑过的事情

  • -X,这只会打印出 -X 参数而不是 -XX
  • 测试版本?如何?需要预先了解哪些版本支持什么
  • 调用虚拟应用程序并测试返回值,例如java -XX:ReduceInitialCardMarks -jar dummy.jar。 rt.jar 中没有适合使用静态 void main() 的类,因此必须自己制作。

目前最好的方法,当使用 -version 调用时,grep 输出 Unrecognized VM 选项,注意 -version 必须在参数之后,否则它不会测试它。

if java -XX:-ReduceInitialCardMarks -version 2>&1 | grep -q 'Unrecognized VM option'; then echo "Not supported"; else echo "Supported"; fi

有什么干净的方法可以做到这一点吗?

最佳答案

在我的机器上,执行

java -XX:+ReduceInitialCardMarks -version

返回0和版本信息(因为支持该选项),并执行

java -XX:+NoSuchOption -version

返回 1 并在 stderr 上显示一些错误消息。如果这适用于您的 Java 版本,那么您可以简单地做

if java -XX:+ReduceInitialCardMarks -version; then
echo "Supported"
else
echo "Unsupported"
fi

关于java - 测试 Java 是否支持 -XX 选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25800720/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com