Para quem teve problemas com .jar

10 respostas
D

Ess tópico é para quem já teve problema com .jar…
Após criado o arquivo .jar com Eclipse , ao tentar executar uma aplicação …dava erro

java.lang.NoClassDefFoundError: net/sf/jasperreports/engine/JRDataSource

procurei em vários fóruns e e nao obtive resposta…alguns me diziam para colocar todos os arquivos .jar que a aplicação usasse junto com com a aplicao…etc…etc
Acabei resolvendo sozinho…peguei os arquivos que faziam parte da aplicação e coloquei dentro da pasta jre/lib/ext do CLASSPATH… funcionou perfeitamente…

Mas, mesmo assim agradeço a boa vontade de todos que de alguma forma ou outra tentaram ajudar…

10 Respostas

S

O unico problema fazendo isso é que vc vai ter que fazer isso em todas as maquinas que seu programa for executar.

Já tentei gerar um .jar no eclipse e no NetBeans, onde meu projeto precisa usar outros .jar externos, mas não consigo fazer eles funcionar quando vc da 2 cliques em cima.

Se eu gerar o .jar via prompt eu consigo fazer a aplicação rodar legal, mas num sei o que está pegando que se eu trocar minha aplicação de local o programa não executa mais.

C

Opa…

Acho q qdo o assunto e jasper eu posso ajudar a exclarecer as suas duvidas…

Bem pessoal, tb tive esse mesmo problema que vcs, tb procurei em tudo quanto e forum q existe na net e tb n encontrei resposta rsrsr
Bem… entao vamos la!
Pra resolver o meu problema com uma aplicacao simples, eu usei um instalador feito em Java, ond dentro dele eu coloquei um diretorio lib com todos os jar do jasper que a minha aplicacao necessitava e o .jar da aplicacao, tive que colocar no manifest o caminho dos .jar do jasper pra minha aplicacao saber ond buscar, entao esta solucionado os problemas!
tp…
pra quem usa ruindows e trabalha com aplicacao local, pd fazer uns instalador mesmo usando arquivos .bat e arquivos .exe gerados no power archiver! tb e uma boa opcao, mas no meu caso q programo pra JWS entao precisava d um instalado em java mesmo!!!

Espero ter exclarecido a duvida de voces! qualquer coisa tamo ai!!

V

essa solução é uma das piores existentes pra resolver o problema do classpath, desse jeito vc vai obrigar o usuario do teu sistema saber onde diabos está instalado o JRE e copiar pra pasta /lib/ext o teu .jar

tente encontrar uma solução mais elegante como criar um .jar com o classpath ajustado dentro do Manifest ou ao menos um .bat e .sh com a linha de comando completa ajustando as variáveis necessárias pra execução.

por exemplo, crie um manifest pra o teu .jar com o seguinte conteudo:
Manifest.mf

Manifest-Version: 1.0 Class-Path: lib/jasper-reports.jar Main-Class: my.app.Main
crie o seu .jar assim
jar -cvfm myapp.jar Manifest.mf -C classes/ . (supondo que os .class estão no diretorio classes)

depois distribua tua aplicação com a seguinte estrutura:
myapp.jar
lib/jasper-reports.jar

e execute com
java -jar myapp.jar

S

Ae viecili, cara fiz o seguinte:

Manifest.mf

Manifest-Version: 1.0
Class-Path: teste/bin/jasper-reports.jar
Main-Class: teste.Main

Minha estrutura é essa:

- C:\teste
    - bin
    - classes
    - Main.class

- C:\Manifest.txt

executando o seguinte comando :

C:\>jar cvfm teste.jar Manifest.mf C teste/

gera meu teste.jar e executa blz.

Mas se eu pegar esse teste.jar e jogar em outra pasta, como por exemplo: C:\Temp. quando eu dou dois cliques no teste.jar ele não funciona mais e aparece o seguinte erro: "Fatal exception ocurred. Program will exit.".

Você sabe o porque disso ?????

Obrigado

V

Pq vc tem q distribuir a tua estrutura de bibliotecas junto com a tua aplicação. Ou seja, se vc tem:

\Projeto +- \lib | +- jasper-reports.jar +- app.jar
vc vai ter q distribuir a tua aplicação (em zip) com a estrutura e os arquivos conforme a geração do classpath no manifest (senão ele não acha o jasper-reports.jar)

S

Os .jar externos ele está achando e está funcionando corretamente.

O problema é se eu pegar o teste.jar que eu acabei de gerar (no C:) com todas minhas classes e .jar externos dentro dele… se eu alterar esse meu .jar como por exemplo colocando ele em outro diretorio D:\ ele para de funcionar.

J

Sakurai, tenta mudar para:

Manifest-Version: 1.0 Class-Path: teste/bin/jasper-reports.jar;.; Main-Class: teste.Main
e ve o que acontece (é um chute, não sei se vai funcionar).

[color=“red”]EDIT:[/color] Podem deletar esse post :roll:

J

Aqui tem uma forma de usar um único jar:
http://www-128.ibm.com/developerworks/java/library/j-onejar/

M

Estou com o mesmo problema em relação a arquivos jar no ruindows XP. No meu caso quando executo o programa pelo JCreator ele funciona… Porém se executo o progrma no prompt do XP dá erro de NoClassDefFoundError: nu/xom/Node… No CLASSPATH está o diretório onde o xom…jar está que é o “jre/lib/ext”

J

Como está o CLASSPATH (completo) nas suas variáveis de ambiente?

Provavelmente o erro está nisso.

Criado 14 de julho de 2005
Ultima resposta 24 de jul. de 2005
Respostas 10
Participantes 6