Aplicação J2ME não executa

3 respostas
Turbo_Drive

Boa tarde a todos novamente.

Vi um tutorial aqui no GUJ, onde mostra como criar um servlet acessando o Mysql e devolvendo para uma aplicação J2ME. Eis o código da aplicação:
import java.io.*;
import java.util.*;
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
import javax.microedition.io.*;

public class testMysql extends MIDlet implements CommandListener {
    private String username;
    private String url = "http://localhost:8080/meuservlet/turbo.tur";
    
    private Display display;
    private Command exit = new Command("Sair", Command.EXIT, 1);;
    private Command connect = new Command("Conectar", Command.SCREEN, 1);
    private TextField tb;
    private Form menu;
    private TextField tb1;
    private TextField tb2;
    DB db;
    
    public testMysql() throws Exception {
        display = Display.getDisplay(this);        
    }    
    public void startApp() {
        displayMenu();
    }    
    public void displayMenu() {
        menu = new Form("Conectando ao BD");        
        tb = new TextField("Informe o database: ","",30, TextField.ANY );        
        tb1 = new TextField("Informe o usuário: ","",30,TextField.ANY);        
        tb2 = new TextField("Informe a senha: ","",30,TextField.PASSWORD);        
        menu.append(tb);
        menu.append(tb1);
        menu.append(tb2);
        menu.addCommand(exit);
        menu.addCommand(connect);
        menu.setCommandListener(this);
        display.setCurrent(menu);
    }
    
    public void pauseApp() {}    
    public void destroyApp(boolean unconditional) {}  
    
    public void commandAction(Command command, Displayable screen) {
        if (command == exit) {
            destroyApp(false);
            notifyDestroyed();
        } else if (command == connect) {
            db  = new DB(this);
            db.start();
            db.connectDb(tb.getString(),tb1.getString(),tb2.getString());
        }
    }
    
    public class DB implements Runnable {
        testMysql midlet;
        private Display display;
        String db;
        String user;
        String pwd;
        public DB(testMysql midlet) {
            this.midlet = midlet;
            display = Display.getDisplay(midlet);
        }
        
        public void start() {
            Thread t = new Thread(this);
            t.start();
        }
        
        public void run() {
            StringBuffer sb = new StringBuffer();
            try {
                HttpConnection c = (HttpConnection) Connector.open(url);
                c.setRequestProperty("User-Agent","Profile/MIDP-1.0, Configuration/CLDC-1.0");
                c.setRequestProperty("Content-Language","en-US");
                c.setRequestMethod(HttpConnection.POST);
                
                DataOutputStream os = (DataOutputStream)c.openDataOutputStream();                
                os.writeUTF(db.trim());
                os.writeUTF(user.trim());
                os.writeUTF(pwd.trim());
                os.flush();
                os.close();                
         
                DataInputStream is =(DataInputStream)c.openDataInputStream();
                //is = c.openInputStream();
                int ch;
                sb = new StringBuffer();
                while ((ch = is.read()) != -1) {
                    sb.append((char)ch);
                }
                showAlert(sb.toString());
                is.close();
                c.close();
            } catch (Exception e) {
                showAlert(e.getMessage());
            }
        }
            
        public void connectDb(String db,String user,String pwd) {
            this.db = db;
            this.user = user;
            this.pwd = pwd;
        }        
        
        private void showAlert(String err) {
            Alert a = new Alert("");
            a.setString(err);
            a.setTimeout(Alert.FOREVER);
            display.setCurrent(a);
        }        
    }
}
Eis o código do servlet:
import java.io.*;
import java.text.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.sql.*;

public class getConnection2 extends HttpServlet {    
    public void init() { }
    
    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {       
        DataInputStream in = new DataInputStream((InputStream)request.getInputStream());        
        String db = in.readUTF();
        String user = in.readUTF();
        String pwd = in.readUTF();        
        String message ="jdbc:mysql://localhost:3306/"+db+","+user+","+pwd;
        try {            
            connect(db.toLowerCase().trim(),user.toLowerCase().trim(), pwd.toLowerCase().trim());            
            message += "100 ok";            
        } catch (Throwable t) {
            message += "200 " + t.toString();
        }
        response.setContentType("text/plain");
        response.setContentLength(message.length());
        PrintWriter out = response.getWriter();
        out.println(message);
        in.close();
        out.close();
        out.flush();
    }
    
    public void doGet(HttpServletRequest request,  HttpServletResponse response) throws ServletException, IOException {       
        doPost(request,response);
    }    
    
    private void connect(String db, String user,String pwd) throws Exception {        
        // Establish a JDBC connection to the MYSQL database server.
        //Class.forName("org.gjt.mm.mysql.Driver");
        Class.forName("com.mysql.jdbc.Driver").newInstance();
        Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/"+db,user,pwd);                
    }
}
Quando executo no simulador do Netbeans e clico em Launch, ele me retorna: Exception: java.lang.classNotFoundException:testMysql

Alguém teria alguma idéia do que possa ser ?

Grato pela atenção.

3 Respostas

javaAurelio

Tenta tira o throws do construtor.

Acho que funciona…

ramilani12

Veja o erro:


Quando executo no simulador do Netbeans e clico em Launch, ele me retorna:
Exception: java.lang.classNotFoundException:testMysql

Ele não encontra a classe testMysql vc configurou certinho o ambiente no netbeans?

http://www.netbeans.org/products/mobility/

Turbo_Drive

Galera deu certo. O erro estava na url, que estava apontando para um arquivo que não existia.
Obrigado pela ajuda.

Criado 19 de julho de 2007
Ultima resposta 3 de ago. de 2007
Respostas 3
Participantes 3