Olá
Eu criei um sisteminha no JCreator que está funcionando bunitim, entaum resolvi criar um .jar desse sistema. O que está acontecendo é que quando eu executo .jar está dando um erro ( java.lang.NullPointerException ), que eu consegui isolar ele e descobri que acontece quando eu tento fazer um resultSet = statement.executeQuery( sql ).
publicBancoDados(){try{Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");conn=DriverManager.getConnection("jdbc:microsoft:sqlserver://SERVIDOR:1433;databaseName=GENLOG;User=sa;Password=");stm=conn.createStatement();}catch(Exceptione){System.out.println("Falhou: "+e);}}publicvoidexportarArquivo(Filefile,StringtipoUsuario,booleanimprimir){FileWriterwriter;PrintWriterout;Stringsql;ResultSetrs=null;Stringsexo;intcont=0;try{writer=newFileWriter(file);out=newPrintWriter(writer);if(tipoUsuario.equals("Aluno")){out.println("Matricula; Nome; Sexo; Curso; Turno; Turma; Login; Senha");sql="SELECT * from usuario WHERE tipo = '"+tipoUsuario+"' AND impresso = 'nao' AND situacao <> 'Cancelado'";rs=stm.executeQuery(sql);if(imprimir)atualizaImpresso(tipoUsuario);while(rs.next()){cont++;if(rs.getString("sexo").equals("F"))sexo="a";elsesexo="o";out.print(rs.getString("matricula")+";");out.print(rs.getString("nome")+";");out.print(sexo+";");out.print(rs.getString("curso")+";");out.print(rs.getString("periodo")+";");out.print(rs.getString("turma")+";");out.print(rs.getString("login")+";");out.println(rs.getString("senha"));}}if(tipoUsuario.equals("Professor")){out.println("Nome; Login; Senha");sql="SELECT * from usuario WHERE tipo = '"+tipoUsuario+"' AND impresso = 'nao' AND situacao <> 'Cancelado'";rs=stm.executeQuery(sql);if(imprimir)atualizaImpresso(tipoUsuario);/*while( rs.next() ) { cont++; out.print( rs.getString( "nome" ) + ";" ); out.print( rs.getString( "login" ) + ";" ); out.println( rs.getString( "senha" ) ); }*/}out.close();writer.close();JOptionPane.showMessageDialog(null,"Foram exportados "+cont+" registros");cont=0;}catch(Exceptione){JOptionPane.showMessageDialog(null,"Falha no exportarArquivo(): "+e);}
Entaum, no final do codigo tem a linha
rs = stm.executeQuery( sql );
se eu comentar ela dae funciona o programa normal. o erro tah aparecendo justamente quando acontece o executeQuery. o que nao entendo eh q quando executo exatamente o mesmo codigo no jcreator ele funciona.
A
alexfb
Sou iniciante na hitória, mas será q o problema não está na geração do .jar ?
Tem algo a ver com o Main-class ?
N
Newdevas
Acho que não com relação ao main-class senao acho q nem executaria o programa certo? ele tah funcionando, soh na hora q eu executo um evento que possui algum comando sql que dá a mensagem de erro.
Estou fazendo testes aqui e olha soh, quando eu coloco no manifest o .jar do driver do sqlserver dae dá um pipoco q quando eu clico nos menus nao tras mais as minha internal frames. dae se eu gero o .jar sem o class-path dae funciona normal as telas, mas na hora do sql lá da pau.
Mais pistas pra vcs ae, hehe. To achando q meu problema tah nesse driver do sqlserver no .jar será q nao eh isso?
O Statement tah declarado antes do construtor, malz ae, mas ele tá private. Todos os acessos ao banco são feitos através dessa classe. Como já disse antes, no JCreator funciona certinho mas no .jar…
if(statement==null)System.out.print("eu sou null");
[]'s Tone
N
Newdevas
Bingooo, é isso mesmo. Olha só o erro "java.lang.ClassNotFoundException: com.microsoft.jdbc.sqlserver.SQLServerDriver. Eu nao tinha visto o erro antes porque eu coloquei no catch exception para trazer o erro via System.out.println… coisa de novato mesmo, hehe. Desculpa o transtorno pessoal, obrigado por todos que ajudaram.
Consegui fazer encontrar o driver acertando a criação do .jar, mas na minha aplicacao eu tenho as opcoes num JMenu na JFrame mas quando seleciono algum JMenuItem não está trazendo nada, deveria trazer uma internalframe…
Luiz-SP
São Paulo, 21 de julho de 2004.
PõeocógidodoJMenuedoJFramepraagentever:shock:
Luiz Claudio F. dos Santos
N
Newdevas
Fiz varios testes aqui, descobri que o meu problema mesmo é na geração do .jar que quando executo ele não encontra o driver do sqlserver. To tentando fazer de varias formas diferentes meu manifesto mas não to conseguindo. Já olhei em documentações e até no forum aqui algo semelhante e não achei