我在Java程序中有可怕的,不正确渲染的字体,如jabref和rubymine.这可以通过运行来修复

_JAVA_OPTIONS='-Dawt.useSystemAAFontSettings=on' jabref

我知道我可以将这些Java选项导出为环境变量,并从命令行启动程序.但是,有没有办法在全局设置这些选项,以便所有Java程序都能识别它们,无论它们是如何启动的?

我也知道我可以修改我的Java程序的所有* .desktop文件,但我正在寻找一个全局解决方案.

我在Arch Linux上使用java-7-openjdk. (FWIW曾经安装了现已破损的jre7-openjdk-headless-infinality.)

解决方法:

您知道如何在shell中设置变量,但对于记录you can write:

export _JAVA_OPTIONS='-Dawt.useSystemAAFontSettings=on'

并且在此之后从此shell会话开始的所有程序都将设置变量.

如果您希望为之后启动的每个shell设置它,请将该行添加到〜/ .profile中.在这种情况下,它将适用于您启动的所有未来shell,但不适用于当前正在运行的任何shell.

.profile通常也适用于GUI,但这可以通过系统配置以及如何启动来解决.这仅是每用户配置.

如果您希望始终为每个用户设置,则可以向/ etc / environment添加分配.格式有点不同:在单独的行上只有KEY = VAL,没有必要的引用,也没有任何其他内容.

_JAVA_OPTIONS=-Dawt.useSystemAAFontSettings=on

这由pam_env模块解析.还有一个per-user~ / .pam_environment文件,它对一个用户具有相同的效果.这些都需要注销并重新登录才能使更改生效.将在控制台和X中为每个将来的登录会话设置变量.

同样,您可以在/etc/profile.d中创建一个带有导出语句的文件,任何用户都可以将其加载到每个将来的会话中.可能会有一些预先存在的文件来对其进行建模,但只有上面的导出行才可以.

或者,您可以在〜/ .xinitrc(如果使用startx),〜/ .xsession或〜/ .xprofile中添加export语句. KDE also supports目录〜/ .kde / env,可以包含任意数量的shell文件,其中包含上述导出语句.我可能更喜欢其他方法之一.