Мы используем различные старые версии Java 1.6 на работе, которые не могут быть обновлены по разным причинам вне моего контроля.Проверьте, поддерживается ли опция -XX Java
Некоторая поддержка -XX:ReduceInitialCardMarks, некоторые нет, и выйдите, если вы попытаетесь использовать неподдерживаемый вариант.
Мне нужен сценарий оболочки, который вызывает java с параметром -XX: ReduceInitialCardMarks, если он доступен, но в остальном без него.
Вещи, которые я пробовал/с учетом
- -X, это только распечатывает -X аргументы не -XX
- Тестирование версии? Как? Нужно заранее знать, какие версии поддерживают то, что
- Вызов с использованием фиктивного приложения и проверки возвращаемого значения, например. java -XX: ReduceInitialCardMarks -jar dummy.jar. Нет подходящих классов в rt.jar со статическим void main() для использования, поэтому нужно сделать свой собственный.
Лучший подход до сих пор, grepping выход для параметра Unrecognized VM при вызове с -version, note -version должен быть после аргумента, поскольку в противном случае он не тестирует его.
if java -XX:-ReduceInitialCardMarks -version 2>&1 | grep -q 'Unrecognized VM option'; then echo "Not supported"; else echo "Supported"; fi
Есть ли какой-либо чистый способ сделать это?
мне это нравится, лучше до сих пор чище, чем мой подход grep. Я немного успокоюсь, если у кого-нибудь есть идеи. – Adam