Informações sobre o ambiente

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