Как установить свойство Java-системы, чтобы оно было эффективным, когда я запускаю JVM без добавления его в аргументы командной строки

В Java 1.7 произошли изменения в способе, с которым пользовательский язык по умолчанию получает от ОС. Существуют способы восстановления старого поведения, например. установив флаг -Dsun.locale.formatasdefault = true при запуске экземпляра JVM.

Я хотел бы установить этот флаг навсегда, чтобы мне не приходилось указывать его в аргументах командной строки каждый раз, когда я запускаю экземпляр JVM. Есть ли файл или любая другая возможность изменить настройки по умолчанию для JVM? Что-то вроде файла Eclipse.ini, но для самого JVM?

Ответ 1

Вы можете установить в вашей ОС заданную переменную среды JAVA_TOOL_OPTIONS. Все инструменты Java (java, javac,..) будут выбирать эту переменную и использовать ее. Таким образом, вы можете, например, использовать

SET JAVA_TOOL_OPTIONS=-Dsun.locale.formatasdefault=true

Я использую это, чтобы создать конкретную локаль для каждой JVM.

Но это работает, только если ваше приложение запускается с помощью инструментов Java. Если это, например, запущено из программы на C, которая вызывает jvm DLL, это не будет использоваться.

Редактирование: я только что протестировал его, и кажется, что JAVA_TOOLS_OPTIONS также отображается при запуске DLL (проверяется с помощью приложения Swing, которое использует WinRun4J в качестве запуска)

См.: http://docs.oracle.com/javase/7/docs/webnotes/tsg/TSG-VM/html/envvars.html.