Chamando um programa java

4 respostas
C

Olá,



Alguém sabe como chamar um programa java dentro de outro?

Estou com um problema… fiz um programa para inserir e pegar dados de um

bd, e outro programa para mostrar indormações em vrml. No entanto preciso

enviar as informações q peguei no primeiro programa e enviar para o vrml

atrvés do segundo programa. Já tentei fazer em um só código, mas gera erro de conexão com o bando de dados… por isso pretendo fazer em programas separados e através do segundo programa enviar os dados do bd para o vrml…

:-o

4 Respostas

A

Não tem como importar o primeiro programa através de suas classes?

Importa o 1o programa no segundo e instancie-o como um objeto, executando seus métodos através desse objeto!

C
como fazer essa importação? qual o código?


segue os programas:








// programa q envia e recebe informações para o banco de dados


import java.sql.<em>;





public class testegraficoa


{


	public static void main (String args [])


	{


		int i;


		float numero;


		String comando;


		try


		{


			Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");


		}


		catch(ClassNotFoundException cnfe)


		{


			System.out.println("Problemas com o Class.forName");


			System.exit(1);


		}





		try


		{


			Connection con = DriverManager.getConnection("jdbc:odbc:barra_odbc");


			Statement st = con.createStatement();


			// Isto é para evitar ter que entra toda hora no sgdb para limpar o banco


			st.executeUpdate("delete from ValorBarra");





			for (i = 1; i <= 100; i++){


				numero = (float) (Math.random()<em>100);


				comando = "Insert Into ValorBarra values (" + i + ", " + numero + ")";


				st.executeUpdate(comando);


			}





			ResultSet rs = st.executeQuery("select * from ValorBarra");





			while (rs.next())


			{


				System.out.print(rs.getString("codigo")+ "-");


				System.out.println(rs.getString("numero"));


			}





			st.close();


			con.close();


		}


		catch(SQLException sqle)


		{


			System.out.println("Problemas com SQL");


			System.err.println(sqle);


			sqle.printStackTrace();


			System.exit(1);


		}





	}


}





//programa que recebe informações do testegrafioa.java e envoa para um programa vrml


import java.awt.</em>;


import java.util.</em>;


import java.awt.event.<em>;


import vrml.</em>;


import vrml.node.<em>;


import vrml.field.</em>;





public class Escala extends Script


{


	private SFVec3f novaEscala;


	private SFFloat timeStamp;





	// Variáveis de controle do Java que são associadas aos tipos do VRML


	// Para cada nó VRML há uma função Java que copia o valores


	float esc[] = {1, 1, 1};





	// Lista de eventos que o Cortona envia para o Java quando o nó


	// Script do VRML é acionado


	static String[] eventos = {"novaEscala", "timeStamp"};





	// Obtém os valores iniciais da cena VRML


	// É chamado quando nó Script é criado


	// Cada um dos campos recebe os valores iniciais definidos na cena


	public void initialize (){


	    System.out.println("initialize - begin ");


        novaEscala = (SFVec3f) getEventOut ("novaEscala");


        timeStamp = (SFFloat) getEventOut ("timeStamp");


	    System.out.println("initialize - end ");


	}





	public void set_escala(){





         testegrafico bd = new testegrafico();


         bd.metodo();





		novaEscala.setValue(esc);


	}





	public void processEvent(vrml.Event e){


	      // System.out.println("Valor: " + esc[1]);


	      //      esc [1] = (float) (Math.random()*10);


				set_escala();





	}


}





OBS:  tentei fazer tuto em um  código não funciona :-W
R

carol…

vc pode criar a instancia da classe que vc deseja na classe que quer usa-la…depois eh soh chamar os metodos que vc fez na classe instanciadaNão sei se resolve…



ate mais… :smiley:

A

Bom, dando uma rápida olhada, não sei te dizer porque não funciona tudo em um único código, mas a solução que eu propus é a que se segue:



Primeiramente, tu deves transformar o 1o código em um objeto. Para isso você deve fazer duas coisas.



  • Crie um construtor que nao faz nada: public testegraficoa() {}

  • Transforme o método main em um método que retorna um valor (para futuramente ser invocado pelo segundo código). Como, não entendi o funcionamento do 2o código, digamos que ele retorne uma String.





Teu código ficaria mais ou menos assim:

Code:




public class testegraficoa

{

//construtor

public testegraficoa() {}



//método main transformado

public String meuMetodo ()

{








Para finalizar esse passo, compile essa classe.



O próximo passo é modificar o segundo código para ele criar uma instância do objeto que tu criaste no passo 1 e invoar o método meuMetodo(), dessa forma:



insira a linha:

import testegraficoa;

junto com os outros imports!



Como eu não entendi como esse código utiliza as informações do primeiro, coloque o instanciamento do objeto onde tu precisar das informações…

Code:




testegraficoa meuObjeto = new testegraficoa();



//recebendo a informacao que precisa:

String sResultado = meuObjeto.meuMetodo();








Bom, se tu nao entendeste algum desses passos, dê uma estudada em orientação a objetos, mas nao hesite em perguntar se precisar!



Espero ter ajudado!



Andre
Criado 21 de março de 2003
Ultima resposta 23 de mar. de 2003
Respostas 4
Participantes 3