Как установить системное свойство 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

Другие вопросы по тегам