[RESOLVIDO] JAR Aplicação SWING - (sim, eu já procurei e não achei solução...)

5 respostas
VictorAJ

Pessoal,

Eu já procurei em fóruns até internacionais e, não sei se fui muito BURRO durante minha pesquisa, mas não achei nada igual. Se já tiver acontecido aqui e eu não fui capaz de achar, peço apenas que me informem o link.

Bom, é o seguinte: eu tenho um arquivo JAR, que na minha opinião, está perfeito. Esse arquivo contém uma aplicação SWING. Nesse JAR, eu tenho a seguinte estrutura (vou colocar apenas os itens relevantes):

cedae
META-INF
  MANIFEST.MF
sistema
  executavel
    Executavel.class

E meu arquivo MANIFEST.MF assim está:

Manifest-Version: 1.0
Created-By: Fat Jar Eclipse Plug-In
Main-Class: sistema.executavel.Executavel
Class-Path: c:\java\lib\cedaeLib

Além da “cedaeLib”, não há mais dependência alguma no código.

Uma vez dentro do diretório onde foi gerado eu arquivo JAR eu digito:

java -jar InterfaceVT_fat.jar

E recebo a mensagem:

C:\MeusProjetos\InterfaceVT>java -jar interfacevt_fat.jar
Exception in thread "main" java.lang.NoClassDefFoundError: sistema/executavel/Ex
ecutavel
Caused by: java.lang.ClassNotFoundException: sistema.executavel.Executavel
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClassInternal(Unknown Source)
Could not find the main class: sistema.executavel.Executavel. Program will exit.
C:\MeusProjetos\InterfaceVT>

Tento também com o comando “javaw” e este simplesmente executa mas não me mostra nada.

Haja visto que meu MANIFEST.MF está corretamente configurado, que de fato existe a estrutura sistema.executavel.Executavel e que meu CLASS-PATH tem as dependências que deve ter, pergunto: o que pode está acontecendo? Alguém aí poderia me ajudar. Será que tem alguma dependência com as bibliotecas SWING?

Grato desde já.

5 Respostas

G

Olá, uma pergunta, você consegue executar ele de dentro da sua IDE???

romarcio
Manifest-Version: 1.0
Created-By: Fat Jar Eclipse Plug-In
Main-Class: sistema.executavel.Executavel
Class-Path: c:\java\lib\cedaeLib\arquivo.jar

Acho que tem que incluir qual jar vc quer que a aplicação leia no endereço do class-path.
Outra coisa, tentou inverter as barras? Não tenho certeza se no manifest as barras são como vc colocou.

ViniGodoy

A especificação do ClassPath certamente está errada. A mensagem de erro sai cortada daquele jeito mesmo?

fantomas

Concordo com o Vini.

Digo mais, normalmente não se coloca o path dos arquivos jar em Class-Path. Simplesmente coloca-se a lista de jars separados por um espaço em branco ( chr(32) ), isso porque a aplicação como um todo tem que ser vista como um aglomerado de jars em um único lugar, caso contrario seria difícil vc trocar a aplicação fisicamente de lugar; você teria que abrir o manifest e ir de path em path para obter os arquivos. Emfim esta é uma questão estratégica que depende de situações que não parece ser a sua. O jar do manifest não é incluido na lista de jar das dependencias.

Verifique se realmente a classe Executavel.class está REALMENTE dentro do seu arquivo jar resultante (use algum descompactador pra verificar). Verifique se o path do package corresponde ao que vc descreveu no Main-Class.

flws

VictorAJ

Pessoal, obrigado a todos! Suas respostas me levaram à solução.

Na verdade, meu erro estava em definir o local onde minha lib estava, ou seja, eu digitei: “c:\java\lib\cedaeLib\cedaeLib.jar” - quando eu deveria apenas ter colocado: “cedaeLib.jar” - e obviamente faz sentido, uma vez que no meu JAR já tem a “cedaeLib.jar”, eu não preciso apontar para o local onde ela está.

Vou responder as perguntas, pra não dar uma de mal educado:

Dentro do Eclipse, clico com o botão direito em cima da minha classe “executável”, depois seleciono RUN AS e em seguida JAVA APPLICATION.

Tentei mas o erro persistiu. Mas de fato, eu esqueci mesmo o nome do arquivo, obrigado!

Com certeza estava errada cara! E mensagem saiu cortada por que eu copiei do Prompt do MS-DOS.

Obrigado a todos!

Grande abraço!

Criado 10 de novembro de 2010
Ultima resposta 11 de nov. de 2010
Respostas 5
Participantes 5