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