Provavelmente deve ser um problema de classpath como indicado pelo Marcio,
você pode configurar no arquivo MANIFEST para fazer isso:
Exemplo:
Manifest-Version: 1.0
Ant-Version: Apache Ant 1.7.1
Created-By: 14.3-b01 (Sun Microsystems Inc.)
Main-Class: genbank2db.Main
Class-Path: lib/toplink-essentials.jar lib/toplink-essentials-agent.ja r lib/mysql-connector-java-5.1.10-bin.jar
Se você utilizar o netbeans, quando se inclui um jar no projeto ele faz a referência automática na construção do projeto e cria o jar da sua aplicação e copia os jars de dependência para a pasta lib dentro da pasta dist.
Para iniciantes, eu acho mais fácil que ficar configurando os pluggins do eclipse.
Acho que a resposta é sim, mas usando o arquivo MANIFEST para salvar a configuração eu teria que ter esse arquivo em todas as maquinas que executem o programa?
Utilizando o netbeans eu eliminaria a necessidade de configurar o manisfest e, também de copiar o jar do postgresql para as outras máquinas executando a aplicação??
o arquivo MANIFEST fica dentro do arquivo JAR da sua aplicação. Se quiser conferir, renomeia o arquivo teste.jar para teste.zip e abra com qualquer descompactador.
A configuração do classpath no MANIFEST evita ter que criar um arquivo bat ou (.sh shell script) com os parametros de classpath e referenciando as dependências.
A recomendação do uso do NETBEANS é que essas configurações são realizadas automaticamente… no Eclipse, você tem que configurar o projeto e o build…
Com relação aos drivers do postgresql ou de qualquer banco, normalmente deve-se copiar junto com a aplicação, você pode incluí-los no jar (existe uma configuração do ant para isso, mas não me lembro direito…).
De qualquer forma, existe boas razões para o jar do driver ficar na pasta lib da aplicação e não dentro do jar, entre elas, destaco:
tamanho do jar da sua aplicação
atualização dos drivers sem a necessidade de rebuild da aplicação
Por outro lado, como você está executando:
java teste
Devemos considerar que não está utilizando um jar, apenas o bytecode compilado (extensão .class). Quando o seu projeto crescer, certamente terá mais de uma classe e ai fica bastante chato copiar os arquivo .class para rodar a sua aplicação. Neste ponto você certamente irá utilizar o jar que encapsula todos os class dentro de um formato jar (zip). E para executá-lo (quando o MANIFEST estiver adequado), você irá utilizar:
Sei lá, mas acho que todo o procedimento de criação de um JAR, apenas para realizar um pequeno teste, pra uma pessoa que está começando com Java, creio que acaba tirando um pouco o foco do que essa pessoa realmente quer, que é só ver seu pequeno teste funcionando corretamente.
Claro que é uma opção pra projetos maiores, mas é muita informação ao mesmo tempo e isso com certeza acaba confundindo e no final das contas acaba causando uma certa frustração ao ver que para fazer algo tão simples é preciso tanta configuração, tanto conhecimento secundário/externo etc.
Acho que isso pode ser resolvido de forma bem mais simples e rápida, com o comando no terminal do Linux, apenas acrescentando o parâmetro com o caminho do Jar do driver do banco, que creio que seja sua única dependência externa no momento.
java -classpath .:/usr/share/java/postgresql-jdbc3.jar Teste