.Jar e conexão com Oracle

13 respostas
E

Olá pessoal,

Fiz um programinha em Java que acesso o banco Oracle, ele funciona normalmente, mas para poder distriui-lo criei um .JAR, e quando tento executa-ló, ele motra o erro: Exception in thread “main” java.lang.NoClassDefFoundError: oracle/jdbc/pool/Orac
leOCIConnectionPool.

A variável CLASSPATH esta correta, mesmo pq, este erro tb aparece na minha maquina, que é onde o sistema foi desenvolvido.

Alguem pode me dar uma luz?

Obrigado,
Everson

13 Respostas

D

Execute assim:

java -cp<path-jdbc-oracle>.jar -jar <seu-jar>.jar

<path-jdbc-oracle> deve ser o caminho+nome do arquivo JAR que contém o driver JDBC do Oracle.

<seu-jar> deve ser… o seu Jar :wink:

Rafael_Steil

O que vc colocou no .jar? toda a aplicacao mais o .jar do Oracle? Se sim, nao aninhem os .jars… coloque cada um explicitamente no classpath.

Rafael

E

Dango, eu vou ter que colocar “-cp” para todos os JAR’s? tem um diretório com varios .JAR’s, que esta na CLASSPATH, e desta forma eu fico preso ao diretório não tem outra solução?

E

Rafael,
no .jar, eu coloquei apenas a minha aplicação, eu posso colocar tb os .jar do oracle? posso colocar todos de uma vez, por exemplo: “diretorio*.jar”?

Grinvon

Coloque o JAR do driver na jre/lib/ext, ele vai rodar sem reclamar da CLASSPATH.

Rafael_Steil

“eversonpiza”:
Rafael,
no .jar, eu coloquei apenas a minha aplicação, eu posso colocar tb os .jar do oracle? posso colocar todos de uma vez, por exemplo: “diretorio*.jar”?

Voce deve colocar :slight_smile:

Ah, e nao coloque no diretorio de libs da jre/jdk… mah pratica isso, pois pode haver maquinas onde voce nao tem direito de gravacao em tal diretorio, tao bem como dar conflito com outras libs de outros projetos, caso utilizem versoes diferentes de uma mesma lib, por exemplo.

Rafael

E

Criei o meu JAR da seguinte forma:
jar cmf manifesto.txt VerificaBd.jar .class C:oracleora92jdbclib.jar

O arquivo ficou gigantesco com 12Mb, e mesmo assim não funcionou, o que estou fazendo de errado?

Rafael_Steil

Como eu tinha dito no outro post, nao coloque todos os jars em um unico. Declare-os no classpath separadamente. E coloque um-por-um, ao inves de apontar para o diretorio com todos os jars

Rafael

D

Olha, eu não sei exatamente como vc quer montar isso. Eu costumo fazer assim:

minha-aplicacao     <-   aqui fica o jar da minha app...
      lib                    <-    nesta pasta ficam os JARs que a minha app usa...

Dai eu faço referência a cada um dos JARs no atributo Class-Path do manifesto da minha aplicação… t-ta! :slight_smile:

D

Af… parece que eu tô com preguiça de digitar hoje (descurpa)…
Seguinte… você vai ter uma pasta onde o seu JAR (da sua aplicação) vai ficar. Nesta pasta você terá uma outra pasta chamada lib (pode ser “xiquinha” se vc quiser, não importa)…

É na pasta lib que vão ficar os JARs que a sua aplicação precisa.

O atributo Class-Path do manifesto da sua aplicação deve ficar assim:

Class-Path: lib\<arquivo1>.jar   lib\<arquivo2>.jar   lib\<arquivoN>.jar

Manjou?! Easy! :wink:
[editado]: êita! o mecanismo do fórum tira as minhas barras… :evil:

E

Galera,
Desculpem a minha ignorancia no assunto, mas ainda não consegui fazer funcionar.

Já tentei colocar no as bibliotecas no mesmo JAR, no CLASSPATH, e no manifesto, mas sempre dá o mesmo erro, diz que não pode encontrar a classe de conexão com o banco “OracleOCIConnectionPool”.

Estou com a impressão que mesmo colocando neste locais a biblioteca, ele não esta conseguindo achar esta classe dentro da PATH, oraclejdbcpool, mas tb já tentei copiar o .JAR que possui a classe para o mesmo diretório e tb não funcionou.

Alguem pode me ajudar, de mais alguma forma, ou posso dar como caso perdido?

Everson

D

Olha, se vc fez do jeito que eu falei acima, com o teu jar separado dos jars que a aplicação precisa e no esquema que eu falei, não tem erro é pra funcionar (minhas apps funcionam assim).

Começa a desconfiar desse JAR… verifica se o nome da classe que vc esta tentando instanciar é esse mesmo (isso acontece bastante, vc tem um jar mais recente com um nome de classe ligeiramente diferente do que diz o manual ou o artigo/tutorial).

Dá uma conferida nesses lances…
Na pior das hipóteses, desmonta o JAR num diretório qualquer ai e verifica se o caminho/classe existe nele.

E

Galera,

Muito obrigado pelas dicas, vcs me ajudaram bastante, espero um dia ter condições de retribuir esta ajuda.

Everson

Criado 21 de junho de 2004
Ultima resposta 22 de jun. de 2004
Respostas 13
Participantes 4