Como posso obter o valor da variável do sistema presente em
MyComputer -> Properties -> Advanced -> Environment Variables -> System Variables
em Java?
Editar
Eu usei System.getenv()
método.
É valor de impressão se eu der
System.out.println(System.getenv("JAVA_HOME"));
e está mostrando null
valor se eu tentar o mesmo para a variável de sistema criada por mim
System.out.println(System.getenv("DBE"));
Respostas:
Use o
System.getenv(String)
método, passando o nome da variável para ler.fonte
Para esclarecer, as variáveis do sistema são iguais às variáveis de ambiente. As variáveis de ambiente do usuário são definidas por usuário e são diferentes sempre que um usuário diferente efetua login. As variáveis de ambiente em todo o sistema são as mesmas, independentemente do usuário que efetua logon.
Para acessar o valor atual de uma variável de todo o sistema ou de uma variável de usuário em Java, consulte abaixo:
Para mais informações sobre variáveis de ambiente, consulte esta página da Wikipedia .
Verifique também se a variável de ambiente que você está tentando ler está configurada corretamente antes de chamar o Java, fazendo um:
Você deve ver o valor da variável de ambiente. Caso contrário, talvez seja necessário reabrir o shell (DOS) ou fazer logoff e logon novamente.
fonte
getenv
deve ser em caso pequeno, em vez degetEnv
certo?echo %var%
, imprime%var%
. Se eu tentar,echo $var
ele funciona e exibe o valor dessa variável env. Meugetenv
está retornando nulo.%var%
usado para windows,$var
para sistemas unix / linux / MacOS.Existem alguns detalhes de interesse ao obter propriedades do sistema / ambiente.
Primeiro,
System.getenv(String)
foi introduzido antes e depois preterido. A depreciação (tolamente, IHMO) continuou até o JSE 1.4 .Foi reintroduzido no JSE 5 .
Essas são definidas usando o painel Variáveis de ambiente no Windows. As alterações nas variáveis podem não ser selecionadas até que sua VM atual seja desligada e a instância do CMD.exe seja encerrada.
Ao contrário das propriedades do ambiente, o Java também possui propriedades do sistema Java, acessíveis através
System.getProperties()
. Essas variáveis podem ser inicializadas quando a VM é iniciada usando argumentos de linha de comando em série . Por exemplo, os valores para as propriedades e são configurados no comando abaixo:-Dname=value
maxInMemory
pagingDirectory
Essas propriedades podem ser modificadas em tempo de execução, impedindo restrições de diretiva de segurança.
fonte
Na verdade, a variável pode ser configurada ou não; portanto, no Java 8 ou superior, seu valor anulável deve ser agrupado em um
Optional
objeto, o que permite recursos realmente bons. No exemplo a seguir, tentaremos obter a variávelENV_VAR1
, se ela não existir, podemos lançar alguma exceção personalizada para alertar sobre ela:fonte
O Google diz para conferir getenv () :
No entanto, não tenho certeza de como as variáveis do sistema diferem das variáveis de ambiente; portanto, se você puder esclarecer, eu poderia ajudar mais.
fonte
Você tentou reiniciar desde que definiu a variável de ambiente?
Parece que o Windows mantém sua variável de ambiente em algum tipo de cache e a reinicialização é um método para atualizá-lo. Não tenho certeza, mas pode haver um método diferente, mas se você não alterar muito o valor da variável, isso pode ser bom o suficiente.
fonte
Como mencionado por alguém acima, reiniciar o eclipse funcionou para mim para a variável de ambiente definida pelo usuário. Depois de reiniciar o eclipse IDE,
System.getenv()
está pegando minha variável de ambiente.fonte
Você está em um sistema Linux? Nesse caso, verifique se você está exportando sua variável.
Eu fico nulo, a menos que use exportação para definir o valor globalmente.
fonte