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