Erro ao importar .jar

10 respostas
F

Olá pessoal,

Tenho minhas classes de uso geral, em um arquivo .jar, na pasta /lib do meu projeto, no linux a importação do pacote .jar funciona legal.
Já em windows ele diz que a classe .jar a ser importa não existe, mas ela está na pasta /web-inf/lib do projeto assim como no linux.

tem que configurar alguma coisa aqui pra ele saber onde tá o .jar a ser importado?

Valeu.

10 Respostas

dgouvea

Ja aconteceu isso comigo, não sei te explicar porque não funciona, mas uma solução rápida para isso é você colocar o seu jar na pasta:
[list]$CATALINA_HOME/shared/lib[/list]

Rodrigo_Carvalho_Aul

Dá esse erro na hora de compilar classes que usam esse jar ou na hora de rodar o JSP?

Lembre-se que o /web-inf/lib não necessariamente faz parte do seu classpath. Ele é classpath apenas da sua aplicação do TomCat.

[]'s

F

Até que tentei, mas o erro continua o mesmo.
na hora de importa o .jar estou a sintaxe:
<%@page import=“nomedopacote.*”%>

Ele continua avisando pacote não existe. Pô mais ele tá tb no:

$CATALINHA/shared/lib

Vc tem mais alguma sugestão?

Rodrigo_Carvalho_Aul

Detalhe que não percebi, no TomCat tudo é case sensitive, o diretório web-inf tá com letra minúscula? Tenta colocar em maiúscula e vê se funciona.

[]'s

F

Rodrigo,

:arrow: &#91;i&#93;Dá esse erro na hora de compilar classes que usam esse jar ou na hora de rodar o JSP? &#91;/i&#93;

O erro ocorre ao rodar o JSP, como postado acima ao tentar importar o pacote o tomcat avisa que ele não existe.

N

Segundo a especificação J2EE você tem que usar no diretório WEB-INF (maiúsculo, case sensitive).

Pode ser que algum servidor “complacente” tenha permitido você utilizar em web-inf (em minúsculos) fora da especificação.

IMPORTANTE: Se a sua classe estiver no pacote default “.”, você terá erros com jsp. Estou sem a explicação neste momento, mas se for o caso, tente colocar a classe em um pacote.

Tem como mandar um “dir /b/s” a partir do seu diretório de aplicação web ? Só para ver se a estrutura está correta !

Manda também o nome da classe e o nome do pacote.

F

Vamos lá.

Eu tenho uma classe chamada Db.class.
Empacotei com jar -cvfM fer.jar db.class.
Coloquei no pasta Web-inf do meu projeto, ao tentar carregar dentro de um jsp: <%@page import=“fer.*”%> recebi como retorno um erro pacote não encontrado.

Também coloquei no $CATALINO_HOME/shared/lib, chamei o jsp, recebi o mesmo erro pacote fer.* não existe.

É isso aí e continuo meio perdido. Mas no meu ambiente linux usando webapps/Web-inf/lib funciona legal.

N

É cara, como te disse, não vai rolar. Tá (quase) tudo errado.

A sua classe não está no package, ou você está empacotando (jar) de forma errada.

1 - Sua classe deve ter uma cláusula “package” para determinar que ela está dentro de um package.
2 - Esse package deve corresponder a um diretório a partir de onde você irá executar o “jar”.

Algo como:

package meuPackage;
...
public class Db &#123; .....

Agora, sua classe deve ser colocada em um diretório chamado “meuPackage”.

Vamos supor que você está no diretório c:/Projeto, então você deveria ter o seu .class em uma estrutura como:

c&#58;/Projeto/meuPackage/Db.class

Para criar o jar entra no diretório c:/Projeto e executa o comando jar da seguinte forma:

jar -cvfM0 fer.jar manifest.mf -C *.*

No import do seu jsp, você tem que importar não o arquivo Jar, mas os packages que estão em seu arquivo jar, então seu jsp fica assim:

&lt;%@page import="meuPackage.*"%&gt;

Ufa … deve funcionar.

Fui

N

Novamente (agora lembro o porquê), você deve colocar sua classe em um package.

Porque: o package default de seu jsp é org.apache.jsp.“alguma coisa”, ou algo assim. Então, se você colocar no package default (sem package), não rola, porque ele não vai procurar no package default, mas sim em org.apache.jsp.“alguma coisa”.

Fui

F

Valeu net_sandro, é isso aí tudo muito claro e tudo funcionando.

Obrigado, essa eu não esqueço.

Criado 15 de dezembro de 2003
Ultima resposta 16 de dez. de 2003
Respostas 10
Participantes 4