Como distribuir o driver jdbc na minha aplicação?

Olá galera, eu desenvolvi um software (já está criado o arquivo .jar) e agora quero distribui-lo para os clientes.

Só que eu andei fazendo alguns testes e verifiquei que se eu não adicionar o caminho do driver no classpath ou copia-lo para pasta lib\ext do java, o meu software não encontra o driver.

Existe outra maneira que não seja uma desta duas para fazer isso? Caso sim, o que vcs recomendam?

Eu queria colocar dentro do meu .jar o arquivo .jar do driver ou deixá-lo no mesmo diretório da minha aplicação, e assim evitar copiar arquivos extras para máquina do usuário.

Se você não puder distribuir nem um mísero arquivo “batch” (*.bat ou *.cmd) para iniciar seu programa, pode-se alterar o MANIFEST.MF para pôr uma referência ao JAR. Acho que neste fórum mesmo tem alguns exemplos.

Mas normalmente eu prefiro usar uma batch, porque aí eu posso mudar o ícone como quiser, e passar os parâmetros (incluindo classpath e outras coisas) como eu quiser também. Não gosto de mandar só o .jar.

Na batch, por exemplo, pode haver algo como (no Windows)

start “” “c:\arquivos de programas\java\jre1.5.0\bin\javaw” -classpath bla bla bla ClasseBla argumentos bla bla bla

Acho que vou mandar o arquivo .bat então.

Os arquivos .jar do driver e do softare vão ficar na pasta “C:\estoque”.

Então o exemplo do código do arquivo .bat ficaria assim:

“javaw -classpath C:\estoque\driver.jar -jar C:\estoque\estoque.jar”.

Outra perguntinha…

Eu poderia colocar a jre junto no meu software?
Ela ficaria em “C:\estoque\jre1.5.0” e eu software usaria essa jre, ficando assim o meu arquivo .bat:

“C:\estoque\jre1.5.0\bin\javaw -classpath C:\estoque\driver.jar -jar C:\estoque\estoque.jar”. E com isso eu evitaria ficar instando a JVM na máquina do clientte.

Se ler direitinho a licença você pode distribuir sim, só que não pode omitir nada da JRE (exceto três ou quatro arquivos que estão explicitamente citados na licença) e tem de pôr um “shortcut” para o arquivo de licença da JRE em algum lugar.

Ok, blz.

Então eu posso copiar o driver para a pasta jre…\ext e assim eu evito o uso da opção classpath.

Agora o exemplo do código do meu .bat tá certo, pq eu testei ele e não deu certo. Não encontrou o driver.

Se puder, não inclua arquivos em jre\lib\ext. Os únicos arquivos .jar que devem estar em jre\lib\ext são as bibliotecas de criptografia. Mesmo drivers de bancos de dados é melhor que estejam em um lugar diferente, como no seu CLASSPATH.

Vixe, eu nem imaginava isso. Vlw

[quote=thingol]Na batch, por exemplo, pode haver algo como (no Windows)

start “” “c:\arquivos de programas\java\jre1.5.0\bin\javaw” -classpath bla bla bla ClasseBla argumentos bla bla bla

[/quote]

Pegando o bonde, Thingol você sabe um jeito de fazer um bat sem aparecer aquela tela preta horrível, ou pelo menos sem que ela fique aberta junto com a aplicação?

Opa, o comando javaw já faz isso que vc quer. A tela preta do dos aparece, mas só por alguns instantes e logo depois some.

Não é o ideal :frowning:

Se chamar direto o javaw (sem o start) a partir de um shortcut (não de uma batch) não tem tela preta nenhuma. Só que aí você precisa fazer um shortcut monstro, com trocentos parâmetros.