Onde posso definir opções globais de Java?

10

Eu tenho fontes horríveis e renderizadas incorretamente em programas Java como jabrefe rubymine. Isso pode ser corrigido executando

_JAVA_OPTIONS='-Dawt.useSystemAAFontSettings=on' jabref

Entendo que poderia exportar essas opções Java como variáveis ​​de ambiente e iniciar os programas na linha de comando. No entanto, existe uma maneira de definir essas opções globalmente, para que todos os programas Java as reconheçam, não importa como elas são lançadas?

Também sei que poderia modificar todos os *.desktoparquivos dos meus programas Java, mas estou procurando uma solução global.

Estou usando java-7-openjdkno Arch Linux. (FWIW, isso costumava ser bom com a agora quebrada jre7-openjdk-headless-infinality instalada.)

Sparhawk
fonte
Para mim, só funciona se eu iniciar o aplicativo a partir do terminal, se eu usar o iniciador de aplicativos no painel xfce ou se eu usar um script na área de trabalho, ele não receberá nenhum parâmetro. Por quê??
@MARCOFranciosi Não sei. Isso funciona bem para mim. Você terá que comentar a resposta para que eles possam responder, embora eu não tenha certeza se você já tem representante suficiente.
Sparhawk

Respostas:

7

Você sabe como definir a variável em um shell, mas para o registro, você pode escrever :

export _JAVA_OPTIONS='-Dawt.useSystemAAFontSettings=on'

e todos os programas iniciados a partir desta sessão de shell terão a variável definida.

Se você deseja que seja definido para cada shell iniciado posteriormente, adicione essa linha ~/.profiletambém. Nesse caso, ele se aplicará a todos os shells futuros que você iniciar, mas não aos que estiverem em execução no momento.

.profilegeralmente funcionará também para a GUI, mas isso pode ser interrompido pela configuração do sistema e como você inicia as coisas. Esta é apenas a configuração por usuário.


Se você deseja que ele seja definido para todos os usuários o tempo todo, você pode adicionar uma atribuição a /etc/environment. O formato é um pouco diferente: apenas KEY=VALem linhas separadas, sem necessidade de citação e nada mais.

_JAVA_OPTIONS=-Dawt.useSystemAAFontSettings=on

Isso é analisado pelo pam_envmódulo. Também existe um ~/.pam_environmentarquivo por usuário , que tem o mesmo efeito para apenas um usuário. Ambos exigem o logout e o logon novamente para que a alteração entre em vigor. As variáveis ​​serão definidas para cada sessão de login futura, no console e no X.

Da mesma forma, você pode criar um arquivo /etc/profile.dcom uma exportdeclaração e ele será carregado em todas as sessões futuras por qualquer usuário. Provavelmente haverá alguns arquivos preexistentes para modelá-lo, mas apenas a exportlinha acima será adequada.


Como alternativa, você pode adicionar a exportinstrução em ~/.xinitrc(se você usar startx) ~/.xsession,, ou ~/.xprofile. O KDE também suporta um diretório ~/.kde/envque pode conter quantos arquivos de shell você desejar, que contém exportinstruções como acima. Eu provavelmente preferiria uma das outras abordagens.

Michael Homer
fonte
1
Ótima resposta. Clara e completa. FWIW Eu usei a /etc/environmentopção, que me pareceu mais lógica.
Sparhawk