Exportando .jar com hsqldb

21 respostas
Alchemist

Boa Tarde pessoal,

Estou fazendo uma aplicação Desktop utilizando hsqldb e estou tendo problemas para importar o hsqldb junto com o meu .jar.

Estou usando ele em modo Standalone, eu importo ele certtinho e tal, porem ele não está funcionando.

Alguem poderia me ajudar ?

21 Respostas

G

Qual erro está acontecendo? StackTrace?

Alchemist

Então eu n sei, por que eu gero o .jar certinho dele, quando eu abro todas as classes e arquivos estão dentro dele, é a primeira jframe abre certinho, é como se o db n funciona-se… alguem sabe se precisa da um start dentro dele para ele funcionar ?

G

Cara, bota um log pra saber o que ta acontecendo… ou chama no debug. Assim sem nada não da pra saber…

Alchemist

então me ajuda por favor, como eu vou colocar um log ou debugar se isto acontece dentro do .jar, a aplicação está funcionando normalmente quando eu rodo ela no eclipse, conecta faz tudo bonitinho, o problema esta na hora que eu exporto como.jar… parece que o db n funciona :s

G

Cara, tu terás que editar tua classe antes de montar o jar. Edite ela colocando nem que seja um JOptionPane.showMessage() no lugar aonde supostamente esta dando a exceção. Sem isso fica dificil saber o que pode ser. Só com um stacktrace do erro pra saber isso.

Alchemist

Hum fui exportar o .jar novamente e reparei que ele da dois erros na hora de exportar os arquivos do banco,

O meu banco se chama financeiro.

Os dois erros apresentados são:

Será que alguem sabe o que eu devo fazer ?

G

Se esses dois arquivos sao necessarios à tua aplicação, eles devem estar junto no jar. Tu deves empacotá-los junto!

Alchemist

Sim seria a logica né, mais quando eu vou exportar a aplicação com eles dentro, da os dois erros ai de cima…

Alchemist

esta dando este erro:

Esta é a minha classe de conecção

package model.util;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
	
public class Conexao {
		
		 
	private Conexao(){  
	}
	
	static public Connection abrirConexao() throws ClassNotFoundException, SQLException{
		Class.forName("org.hsqldb.jdbcDriver");
		Connection conn = DriverManager.getConnection("jdbc:hsqldb:file:src/model/database/financeiro", "sa", "");
	    conn.setAutoCommit(false);
	    System.out.println("Conectado");
	    return conn;
	}
		
	static public void fecharConexao(Connection conn) throws ClassNotFoundException, SQLException{
			Statement stmt = conn.createStatement();
			stmt.execute("SHUTDOWN");
			conn.close();
			System.out.println("Desconectou");
	}
	    
	static public void commitConexao(Connection conn) throws SQLException{
		conn.commit();
	}
	
	static public void rollbackConexao(Connection conn) throws SQLException{
		conn.rollback();
	}
	
}//fim classe
G

Cara, tu ta usando o NetBeans? Se for nele tem uma opção bastante simples. Que é no menu Executar > Definir configuração do projeto > Personalizar…

Dentro terá uma opção bibliotecas que tu pode incluir o teu hsqlddb.jar junto na teu jar.

Alchemist

Coloquei a minha classe de conexão ai em cima !!

To usando o Eclipse :S, puta mais se n tem nem ideia do que pode ser ? to procurando no google mais ta dificil :s

G

Cara, uma solução simples seria tu colocar o jar do hslqdb no path da máquina ou rodar desta forma:

java -classpath “c:\diretorio do hsqldb\hsqldb.jar” teupacote.TuaClasseMain

O problema de se usar assim é que tu não vai poder distribuir somente o jar da tua aplicação. Mas se tu quer rodar apenas na tua máquina vai funcionar.

Alchemist

Puts cara o pior é que este projeto aqui é para ser distribuido :s…

Caramba viu deve ser alguma coisa simples que eu não estou achando!! Se alguem tiver alguma dica manda ai que eu já to ficando desesperado !

G

Tu ta criando teu jar pelo eclipse?

Alchemist

Isto mesmo pelo eclipse, procurando na net eu achei este topico aqui :

http://www.portaljava.com/forum/posts/list/20216.page

Será que vc pode me ajudar a faze-lo ? Pq eu n entendi muito bem o que eles fizerão :s

G

brother, tu é novo no java?

Seguinte abra o jar do hsqldb com o winrar (por exemplo), depois descompacte ele e tu verá que se criou uma estrutura de diretórios que na real sao os pacotes do bagulho. É só tu colar essa estrutura toda na raiz do teu projeto do eclipse. Na hora que tu gerar o jar eles irao junto no teu jar como se fizessem parte da tua aplicação. O unico problema disso será que, a cada nova versao do banco tu tera que fazer esse processo e distribuir teu jar de novo.

Tu tem como me mandar teu projeto eclipse?

Alchemist

Hum mais isto com o projeto todo do hsqldb ? Puta queria saber a solução que o pessoal fala de mudar no manifest…

G

Brother, tou te mandando email mas tu não responde. Da uma olhada lá.

G

Cara, só terá um porém. Teus arquivos financeiro.properties e financeiro.script ficarão sempre fora do jar, pois são arquivos usados pelo banco. Isso não tem como resolver.

O que tu podes fazer é criar uma classe java que contem todas insercões das tabelas base pro sistema funcionar e na hora que o cara rodar pela primeira vez o sistema tu roda esse script e salva o banco por exemplo num “C:\Documents and Settings\Perfil do usuário”.

De resto eu só descompactei o hsqldb.jar e coloquei os class dele junto no teu jar. É como se o banco fizesse parte do teu sistema.

Alchemist

Hum entendi, eu estava pesquisando na net e talvez acha uma solução usando o Fat Jar, onde eu deixaria o hsql em outro diretorio e compactaria usando este Fat Jar, vou tentar aqui se eu consegui eu posto a solução.

Obrigado pela ajuda ^^

Alchemist

Bom só para fechar o topico…

Considerações:
Realmente não é possivel deixar o banco de dados dentro da aplicação.

Rolução:
Criei um diretorio lib onde o minha app.jar vai ficar, dentro deste diretorio esta o meu hsql e uma pasta database.

Na minha app.jar eu fiz este manifest

Manifest-Version: 1.0
Main-Class: controller.ControllerMain
Class-Path: ./lib/hsqldb.jar

onde ele encontra o meu hsqldb.

Criado 13 de julho de 2009
Ultima resposta 15 de jul. de 2009
Respostas 21
Participantes 2