Erro ao importar .jar

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.

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]

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

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?

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

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.

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.

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.

É 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=&quot;meuPackage.*&quot;%&gt;

Ufa … deve funcionar.

Fui

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

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

Obrigado, essa eu não esqueço.