Como chamar um outro programa em Java atraves de um botão

[color=darkblue][b]Pessoal,
Necessito de uma ajuda, pois preciso criar uma tela de interface que permita ao clicar no botao ele chame outro programa em Java.
Alguns foruns me falaram de Runtime.exec() porem nada consegui

Segue o codigo e conto com ajuda de voces:

import java.awt.;
import java.awt.event.
;
import javax.swing.;
import java.io.IOException.
;

public class InterfaceMor extends JFrame implements ActionListener
{
public FilaCircular listaC = new FilaCircular();
public ModuloUsuario user = new ModuloUsuario(listaC/,web/);//só construir quando a interface do mod usuário for carregada.
//public ModuloWeb web = new ModuloWeb();
//public ModuloEstatistico est = new ModuloEstatistico();
//public ModuloLog log = new ModuloLog();

/* 
md1 = entrada = Modulo de Entrada onde registra a solicitação
md2 = web = Modulo de Web que consulta as solicitaçãoes criadas e seleciona as que serao publicadas
md3_*/

JButton md1, md2, md3, md4, md5, sair;
JLabel titulo, rodape;
JTextArea area;

public InterfaceMor(){

	Container janela = getContentPane();
	janela.setLayout(new BorderLayout());
	
	Container caixa = new Container();
	caixa.setLayout(new GridLayout(3,3));
	
	Container fr_01 = new Container();
	fr_01.setLayout(new FlowLayout());
	
	
	titulo = new JLabel(".     Projeto de Software Integrado para ALGESD");
	md1 = new JButton("Criar Solicitação");
	md2 = new JButton("Escolha das Noticias");
	md3 = new JButton("Gerar Relatorio");
	md4 = new JButton("Verificar LOG");
	md5 = new JButton("Pendencias");
	sair = new JButton("Sair do Programa");
	area = new JTextArea(20,20);
	
	caixa.add(titulo, BorderLayout.NORTH);

	fr_01.add(md1);
	fr_01.add(md2);
	fr_01.add(md3);
	fr_01.add(md4); 
	fr_01.add(md5);
	fr_01.add(sair); 		
	
	caixa.add(fr_01, BorderLayout.CENTER);
	caixa.add(area, BorderLayout.SOUTH);		

// janela.add(fr_01, BorderLayout.EAST);
// janela.add(area, BorderLayout.WEST);
janela.add(caixa);

	md1.addActionListener(this);
	md2.addActionListener(this);
	md3.addActionListener(this);
	md4.addActionListener(this);
	md5.addActionListener(this);
  sair.addActionListener(this);
	
	setTitle("Projeto de Software Terminado");
	setBounds(50, 50, 600,400);
	setVisible(true);

}

// Runtime.getRuntime.exec(“javac Agente.java”); e chamar a classe Runtime … java.io.IOException
//Runtime.getRuntime().exec(

public void actionPerformed(ActionEvent e)
{
	if(e.getSource() == sair)
	{
		System.exit(0);	
	}
	if(e.getSource() == md1)
	{

// ELE TERIA QUE ACONTECER AQUI
Runtime.getRuntime().exec(“java Solicitacao.java”);

// ELE TERIA QUE ACONTECER AQUI
}
}
public static void main(String args[])
{
InterfaceMor a = new InterfaceMor();
a.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

Olá!

Bom ai depende de alguns fatores… nesse caso ai

//ao invés disso
Runtime.getRuntime().exec("java Solicitacao.java");

//teria que ser isso, igual quando se executa do console (o .java só vai no javac)
Runtime.getRuntime().exec("java Solicitacao");

mas dai tem que ver:

  • se tem a virtual machine instalada e com as variáveis de ambiente setadas corretamente
  • se o arquivo Solicitacao.class está no mesmo diretório da aplicação

pois assim como você está fazendo, é a mesma coisa de você dar um “java” no console…
qualquer duvida posta ai :smiley:

Abraços

Já que você quer chamar um outro programa em Java, lembre-se que este outro programa irá ter uma classe principal com um método main. Então basta chamar este método da classe que você quer iniciar, de preferência dentro de um outro thread.
Ex:

Thread inicia = new Thread() {
    public void run() {
        OutroPrograma.main(new String[]{});
    }
};

inicia.start();

bruno, nao ficou muito claro. onde eu coloco o programa a ser aberto eu nao teria q colocar o caminho dele n?
tava precisando d um metodo pra abrir um outro .jar q funcionasse tanto no windows quanto no linux

grato

guarda dentro de um arquivo de configurações

.properties

Properties p = new Properties();
InputStream in;
in = this.getClass().getResourceAsStream(arquivo);
propriedades.load(in);

String caminho = propriedades.getProperty(caminhoDoArquivo);

e depois vc usa ele para abrir o jar com o “exec”