[RESOLVIDO] JAR não executa, sendo que no IDE não dá erro

21 respostas
dexfelipe

Boa tarde,

Eu fiz um programinha e gerei o arquivo .JAR corretamente (como já fiz com outros 4 programas que já fiz) indicando a classe Main e tudo mais, usando Eclipse IDE (a mesma versão que sempre usei 3.3.2), quando eu executo o programa atravéz do IDE funciona que é uma beleza, mas quando executo através do .jar não funciona.

Vou tentar anexar o programa, eu coloquei até uma mensagem para ver se aparece e aparece, fiz assim no meu Main, a primeira mensagem aparece “mensagem antes de mostrar a tela inicial”:

public class Main {

public static void main(String[] args) { 
JOptionPane.showMessageDialog(null, "mensagem antes de mostrar a tela inicial");
VOTimesheetLOE.login();
JOptionPane.showMessageDialog(null, "mensagem depois de mostrar o login");
}
}

Não sei como encontrar o erro nisso, pois no IDE não dá erro algum…

Help!!!

21 Respostas

Pilantra

Qual a saída do erro? As bibliotecas estão presentes no Classpath?

renanedpedroso

Talvez este link possa te ajudar.

http://www.guj.com.br/posts/list/201576.java

Abraço!

dexfelipe

Não tem saída de erro… =/

Mikhas

Aparece alguma Exception quando você roda pela linha de comando ?

dexfelipe

renanedpedroso:
Talvez este link possa te ajudar.

http://www.guj.com.br/posts/list/201576.java

Abraço!

Renan,

Ainda nada…

=/

renanedpedroso

Se em seu projeto existe algum jar usado como biblioteca, você deve colocá-lo dentro da pasta informada no Class-Path do arquivo Manifest ou então na mesma pasta do jar principal.

dexfelipe

Mikhas,

Ainda não tentei rodar pela linha de comando, como faço (qual a linha de comando)?

renanedpedroso

java -jar nomedojar.jar

Lembrando que você deve estar com o console no mesmo diretório do jar.

dexfelipe

Renan,

O arquivo manifest está sendo gerado automaticamente pelo Eclipse IDE, creio que não haja erros, mas vou verificá-lo mesmo assim.

renanedpedroso

Renan,

O arquivo manifest está sendo gerado automaticamente pelo Eclipse IDE, creio que não haja erros, mas vou verificá-lo mesmo assim.

Poste aí o Manifest gerado e também a estrutura de diretórios e arquivos que você tem ao executar.

tkx

Tente:

Colocar as bibliotecas usadas no projeto dentro da pasta do jar!
Ou mudar o classpath no Manifest!

Ou ainda, usar um plugin do eclipse chamado fatJar! Esse plugin gera um jar com tudo dentro!

dexfelipe

Sim, está dando a seguinte Exception:

Exception in thread "main" java.lang.NoClassDefFoundError: org/jdesktop/swingx/J
XFrame
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(Unknown Source)
        at java.security.SecureClassLoader.defineClass(Unknown Source)
        at java.net.URLClassLoader.defineClass(Unknown Source)
        at java.net.URLClassLoader.access$000(Unknown Source)
        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)
        at timesheetloe.Main.main(Main.java:23)
Caused by: java.lang.ClassNotFoundException: org.jdesktop.swingx.JXFrame
        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)
        ... 13 more
renanedpedroso

Siga as recomendações do tkx.

Abraço!

dexfelipe

tkx:
Tente:

Colocar as bibliotecas usadas no projeto dentro da pasta do jar!
Ou mudar o classpath no Manifest!

Ou ainda, usar um plugin do eclipse chamado fatJar! Esse plugin gera um jar com tudo dentro!

As bibliotecas usadas já estão dentro do jar.

Como instalo esse plugin fatJar?

tkx

dexfelipe:
tkx:
Tente:

Colocar as bibliotecas usadas no projeto dentro da pasta do jar!
Ou mudar o classpath no Manifest!

Ou ainda, usar um plugin do eclipse chamado fatJar! Esse plugin gera um jar com tudo dentro!

As bibliotecas usadas já estão dentro do jar.

Como instalo esse plugin fatJar?

Olhe o q eu disse:
Dentro da pasta do Jar. Não dentro do jar!
O q está escrito no manifest, na linha classpath?

Basta abrir o jar com um compactador de arquivos (o jar eh um zip com extensão modificada), na pasta meta-inf estará o manifest.mf

geralmente:
Vc copia a pasta lib do projeto original e cola junto com seu jar, NA MESMA PASTA E NÃO DENTRO DELE!

FatJar: http://www.guj.com.br/posts/list/59739.java
http://www.guj.com.br/posts/list/63626.java

dexfelipe

Renan,

O arquivo manifest está sendo gerado automaticamente pelo Eclipse IDE, creio que não haja erros, mas vou verificá-lo mesmo assim.

Poste aí o Manifest gerado e também a estrutura de diretórios e arquivos que você tem ao executar.

Meu manifest gerado ficou assim:

Manifest-Version: 1.0
Main-Class: timesheetloe.Main

Sobre a estrutura de pastas eu tenho a pasta lib (com os jars importados no buildpath) e a pasta src, dentro da src tem duas pastas “timesheetloe” onde está o Main e outras classes e a pasta “util” com outras classes, basicamente isso.

dexfelipe

tkx:
dexfelipe:
tkx:
Tente:

Colocar as bibliotecas usadas no projeto dentro da pasta do jar!
Ou mudar o classpath no Manifest!

Ou ainda, usar um plugin do eclipse chamado fatJar! Esse plugin gera um jar com tudo dentro!

As bibliotecas usadas já estão dentro do jar.

Como instalo esse plugin fatJar?

Olhe o q eu disse:
Dentro da pasta do Jar. Não dentro do jar!
O q está escrito no manifest, na linha classpath?

Basta abrir o jar com um compactador de arquivos (o jar eh um zip com extensão modificada), na pasta meta-inf estará o manifest.mf

geralmente:
Vc copia a pasta lib do projeto original e cola junto com seu jar, NA MESMA PASTA E NÃO DENTRO DELE!

FatJar: http://www.guj.com.br/posts/list/59739.java
http://www.guj.com.br/posts/list/63626.java

tks,

meu manifest inteiro é isso:

Manifest-Version: 1.0
Main-Class: timesheetloe.Main

copiei a pasta lib na mesma pasta que o jar (ja tive esse problema antes com o NetBeans), detalhando programa.jar e diretório lib estão dentro da mesma pasta.

renanedpedroso

Tente informar o Class-Path desta forma, de acordo com os jars que você está utilizando.

Manifest-Version: 1.0  
Main-Class: timesheetloe.Main  
Class-Path: lib/arquivo1.jar lib/arquivo2.jar lib/arquivo3.jar

Espero ter ajudado.

tkx

Ok… agora eh a parte bruta da coisa! =D

Vc vai editar o manifest num editor de texto comum.

Se existir a linha, modifique, senão crie-a:

Class-Path: lib/jar1dabiblioteca.jar lib/jar2dabiblioteca.jar

Isso é pro seu projeto ver as bibliotecas…

Salve isso com o mesmo nome (manifest.mf) e coloque no jar substituindo o que já existe!

Se com isso não funcionar, tente aprender a usar o fatjar…

Não é uma boa prática usar o fatjar, mas ele quebra muitas árvores por ae! Principalmente em casos como o seu!
Mas n tenho nenhum problema ao criar jar pelo netbeans (ide q uso)…

dexfelipe

Resolvido

Manifest-Version: 1.0
Main-Class: timesheetloe.Main
Class-Path: lib/appframework-1.0.3.jar lib/beansbinding-1.2.1.jar lib/substance.jar lib/swing-layout-1.0.3.jar lib/swing-worker-1.1.jar lib/swingx.jar

Era mesmo o bendito manifest…

Obrigado pelas respostas…

Acho curioso porque o eclipse sempre me gerou corretamente meus programas, estranho dessas vez não…enfim… rodando e feliz!

tkx

Precisando, tamos ae!

Edite o título do tópico e coloque [RESOLVIDO] no início para melhor organização!

Criado 23 de março de 2010
Ultima resposta 23 de mar. de 2010
Respostas 21
Participantes 5