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

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

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

Вы можете установить в вашей ОС заданную переменную среды 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.

  • Запуск java с переменной JAVA_OPTS env
  • Как увеличить лимит памяти IDE в IntelliJ IDEA на Mac?
  • Увеличение максимального размера кучи JVM для приложений с интенсивной памятью
  • Счетчик исключений Java для JVM HotSpot
  • Разница между _JAVA_OPTIONS JAVA_TOOL_OPTIONS и JAVA_OPTS
  • Каков максимальный размер кучи с 64-битной JVM?
  • Давайте будем гением компьютера.