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

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!!!

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

Talvez este link possa te ajudar.

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

Abraço!

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

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

[quote=renanedpedroso]Talvez este link possa te ajudar.

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

Abraço![/quote]

Renan,

Ainda nada…

=/

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.

Mikhas,

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

java -jar nomedojar.jar

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

Renan,

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

Renan,

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

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

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!

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

Siga as recomendações do tkx.

Abraço!

[quote=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![/quote]

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

Como instalo esse plugin fatJar?

[quote=dexfelipe][quote=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![/quote]

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

Como instalo esse plugin fatJar?[/quote]

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

Renan,

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

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

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.

[quote=tkx][quote=dexfelipe][quote=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![/quote]

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

Como instalo esse plugin fatJar?[/quote]

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[/quote]

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.

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.

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)…