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 informaçõ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...

 

Os dois programas em Java compilam, no entanto não estão funcionando.... o que pode estar acontecendo?

 

// dados.java – programa que insere  e apresenta valores do bd

import java.sql.*;

 

public class dados{

       private Connection con;

       private Statement st;

       private ResultSet rs;

       private int nIndice = 1;

 

       public boolean criaConexao(){

                   boolean lRetorno;

                   try{

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

                   }

                   catch(ClassNotFoundException e){

                              System.out.println("Um erro ocorreu na conexão:");

                              System.exit(1);

                              lRetorno = false;

                   }

 

                   try{

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

 

                              st = con.createStatement();

                              preencheTabelas();

                              lRetorno = true;

                   }

                   catch (SQLException eSQL){

                              System.out.println("Erro na conexão ");

                              System.exit(1);

                              lRetorno = false;

                   }

                   return (lRetorno);

       }

       public void preencheTabelas(){

                   int i;

                   float numero;

                   String comando;

                   try{

                              st.executeUpdate("delete from ValorBarra");

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

                                          numero = (float) (Math.random()*100);

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

                                          st.executeUpdate(comando);

                              }

                   }

                   catch (SQLException e){

                              System.out.println("Erro ao pesquisar nas tabelas");

                              System.exit(1);

                   }

 

       }

 

       public float pegaValor(){

                   try{

                              rs = st.executeQuery("select numero from ValorBarra where codigo = " + nIndice);

                              if (nIndice > 100)

                                          nIndice = 1;

                              else

                                          nIndice++;

 

                              return ((new Float(rs.getString("numero").trim())).floatValue());

                   }

                   catch (SQLException eSQL){

                              System.out.println("Erro ao pesquisar o valor da barra");

                              System.exit(1);

                              return (0);

                   }

       }

}

 

//Escala.java -  programa que pega os valores de dados.java e envia para serem apresentados em um programa de realidade virtual VRML

 

import java.awt.*;

import java.util.*;

import java.awt.event.*;

import vrml.*;

import vrml.node.*;

import vrml.field.*;

// nova classe que eu criei;

import dados;

 

//import testegraficoa;

 

public class Escala extends Script

{

    private SFVec3f novaEscala;

    private SFFloat timeStamp;

    private boolean conectado;

    private dados oDados = new dados();

    // 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");

        conectado = oDados.criaConexao();

        if (!conectado){

                            System.out.println("Não foi possível conectar-se ao banco!");

                            System.exit(1);

                }

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

    }

 

    public void set_escala(){

                //testegraficoa bd = new testegraficoa();

        //bd.pegaDados();

        esc[1] = (float) oDados.pegaValor();

                novaEscala.setValue(esc);

    }

 

    public void processEvent(vrml.Event e){

                set_escala();

 

    }

}

 

Programa de em VRML:

 

#VRML V2.0 utf8

 

DEF         G1 Group {

    children [

                DEF NO Transform {

                            scale 1 1 1

                            children [

                                        Shape {

                                                   appearance Appearance {

                                                               material DEF SphereColor Material {

                                                                           diffuseColor 1 0 0

                                                               }

                                                   }

                                                   geometry Box  {}

                                        }

                              ]

                }

                Transform {

                            translation        3 3 3

                            children [

                                        Shape {

                                                   appearance Appearance {

                                                               material Material {

                                                                           diffuseColor 0 1 0

                                                               }

                                                   }

                                                   geometry Box { size     1 1 1 }

                                        }

                            ]

                }

    ]

}

 

DEF S Script{

    eventIn SFFloat timeStamp

    eventOut SFVec3f novaEscala

    url "Escala.class"

}

 

DEF         tempo TimeSensor {

    enabled            TRUE

    startTime 0

    loop TRUE

}

 

#Temporizador para representar movimento na cena

ROUTE tempo.fraction_changed TO       S.timeStamp

ROUTE S.novaEscala TO NO.scale

 

Carolina V. Buk

 

 

<<image001.jpg>>

Responder a