【发布时间】:2014-09-12 12:54:23
【问题描述】:
我们在工作中使用了各种旧版本的 Java 1.6,由于我无法控制的各种原因,这些版本无法更新。
有些支持-XX:ReduceInitialCardMarks,有些不支持,如果您尝试使用不受支持的选项,请退出。
我想要一个使用 -XX:ReduceInitialCardMarks 选项调用 java 的 shell 脚本(如果可用,否则不可用)。
我尝试过/考虑过的事情
- -X,这只会打印出 -X 参数而不是 -XX
- 测试版本?如何?需要预先了解哪些版本支持什么
- 使用虚拟应用程序调用并测试返回值,例如java -XX:ReduceInitialCardMarks -jar dummy.jar。 rt.jar 中没有合适的类和 static void main() 可以使用,所以必须自己制作。
目前为止最好的方法,使用 -version 调用时对 Unrecognized VM 选项的输出进行 grepping,注意 -version 必须在参数之后,否则它不会对其进行测试。
if java -XX:-ReduceInitialCardMarks -version 2>&1 | grep -q 'Unrecognized VM option'; then echo "Not supported"; else echo "Supported"; fi
有什么干净的方法吗?
【问题讨论】: