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

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á.

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

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.

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

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

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!