Como eu consigo as seguintes informações a cerca do ambiente em que o programa em Java está sendo executado:
. Sistema operacional
. Variáveis de ambiente
. Memória disponível
. Processador
Como eu consigo as seguintes informações a cerca do ambiente em que o programa em Java está sendo executado:
. Sistema operacional
. Variáveis de ambiente
. Memória disponível
. Processador
Use System.getProperty(“nome.da.propriedade”) para pegar o valor que voce quer. Voce pode ver a lista completa de propriedades na API do J2SE, método “getProperties()” da classe System.
Rafael
Certo, mas você ainda não consegue acessar as variáveis de ambiente. Alguém sabe como fazê-lo.
Nao existe uma maneira pegar as variaveis de ambiente em Java, pois isso nao eh portavel. Se acessar PATH for realmente necessario, entao rode o programa Java passando a variavel pra ele e use System.getProperty() para pegar o valor. Por exemplo
Unix:
$ java -DmeuPath=$PATH MeuPrograma
Windows:
java -DmeuPath=%PATH% meuPrograma
Uma outra saida eh fazer uma classe wrapper para manipular isso. Eis um exemplo:
// EnvironmentVars.java
import java.io.*;
import java.util.*;
public class EnvironmentVars
{
private Properties vars;
private static EnvironmentVars ev;
// Singleton
private EnvironmentVars()
{
vars = new Properties();
// Verifica em qual SO estamos rodando
String SO = System.getProperty("os.name").toLowerCase();
String command;
Process pid = null;
// Se nao for windows, leva em consideracao
// que é Unix ( precisa verificar melhor )
if (SO.indexOf("win") > -1)
command = "cmd /C set";
else
command = "env";
// Pega as variaveis
try {
pid = Runtime.getRuntime().exec(command);
BufferedReader reader = new BufferedReader(new InputStreamReader(pid.getInputStream()));
String linha;
String valores[] = new String[2];
while ((linha = reader.readLine()) != null) {
valores = linha.split("=", 2);
vars.setProperty(valores[0], valores[1]);
}
reader.close();
}
catch (IOException e) {
e.printStackTrace();
}
catch (Exception e) {
e.printStackTrace();
}
try {
pid.waitFor();
}
catch (InterruptedException e) {
e.printStackTrace();
}
}
public static EnvironmentVars getInstance()
{
if (ev == null)
ev = new EnvironmentVars();
return ev;
}
public String getVar(String varName)
{
return vars.getProperty(varName);
}
}
// EnvironmentTest.java
public class EnvironmentTest
{
public static void main(String args[])
{
System.out.println(EnvironmentVars.getInstance().getVar("PATH"));
System.out.println(EnvironmentVars.getInstance().getVar("CLASSPATH"));
}
}
Fiz este codigo apenas como demonstracao, eh necessario fazer umas checagens melhores sobre em que ambiente esta rodando.
Rafael