Где я могу установить глобальные параметры Java?

10

У меня есть ужасные, неправильно отрендеренные шрифты в программах Java, таких как jabrefи rubymine. Это можно исправить, запустив

_JAVA_OPTIONS='-Dawt.useSystemAAFontSettings=on' jabref

Я понимаю, что могу экспортировать эти параметры Java как переменные среды и запускать программы из командной строки. Однако есть ли способ установить эти параметры глобально, чтобы все программы Java распознавали их, независимо от того, как они запускаются?

Я также знаю, что могу изменить все *.desktopфайлы для своих программ на Java, но я ищу глобальное решение.

Я использую java-7-openjdkна Arch Linux. (FWIW раньше это было нормально с установленной сломанной jre7-openjdk-headless-бесконечностью .)

Sparhawk
источник
Для меня это работает, только если я запускаю приложение из терминала, если я использую панель запуска приложений с панели xfce или если я использую скрипт с рабочего стола, он не получает никаких параметров. Почему??
@MARCOFranciosi я не знаю. Он отлично работает для меня. Вы должны будете прокомментировать ответ, чтобы ответчик мог ответить, хотя я не уверен, что у вас еще достаточно представителей.
Sparhawk

Ответы:

7

Вы знаете, как установить переменную в оболочке, но для записи вы можете написать :

export _JAVA_OPTIONS='-Dawt.useSystemAAFontSettings=on'

и все программы, которые вы запустите после этого сеанса оболочки, будут иметь установленную переменную.

Если вы хотите, чтобы он был установлен для каждой оболочки, которую вы запускаете впоследствии, добавьте эту строку ~/.profileтакже. В этом случае он будет применяться ко всем будущим оболочкам, которые вы запускаете, но не ко всем, которые в данный момент работают.

.profileкак правило, будет работать и для графического интерфейса, но это может быть нарушено конфигурацией системы и тем, как вы ее запустите. Это только для конфигурации пользователя.


Если вы хотите, чтобы он был установлен для каждого пользователя все время, вы можете добавить назначение для /etc/environment. Формат там немного другой: просто KEY=VALв отдельных строках, без обязательного цитирования и ничего больше.

_JAVA_OPTIONS=-Dawt.useSystemAAFontSettings=on

Это анализируется pam_envмодулем. Существует также ~/.pam_environmentфайл для каждого пользователя , который имеет тот же эффект только для одного пользователя. Для того, чтобы изменения вступили в силу, оба требуют выхода и повторного входа. Переменные будут установлены для каждого будущего сеанса входа в систему, как в консоли, так и в X.

Точно так же вы можете создать файл /etc/profile.dс exportоператором, и он будет загружен в каждый будущий сеанс любым пользователем. Там, вероятно, будут некоторые уже существующие файлы, чтобы смоделировать их, но только exportстрока выше будет в порядке.


Кроме того, вы можете добавить exportоператор в ~/.xinitrc(если вы используете startx) ~/.xsession, или ~/.xprofile. KDE также поддерживает каталог, ~/.kde/envкоторый может содержать столько файлов оболочки, сколько вы хотите, которые содержат exportоператоры, как указано выше. Я бы предпочел один из других подходов.

Майкл Гомер
источник
1
Отличный ответ. Ясно и тщательно. Я использовал эту /etc/environmentопцию, которая показалась мне наиболее логичной.
Sparhawk