Bom dia!
Criei um chat cliente-servidor simples. Ao tentar executar o jar (com duplo clique), nada acontece. Se tento executar por linha de comando, o seguinte erro aparece:
java/lang/NoClassDefFoundError: java/lang/Object
Pesquisei por aí e percebi que esse erro acontece muito e por infinitas razões, mas sera que o problema não é devido ao meu projeto não executar como um todo? Ou seja, no NetBeans eu executo primeiro a classe Servidor, depois, manualmente executo a classe Cliente. Se tentar executar como um projeto não da certo.
[Resolvido]Erro ao executar .jar
4 Respostas
Bom dia!
Criei um chat cliente-servidor simples. Ao tentar executar o jar (com duplo clique), nada acontece. Se tento executar por linha de comando, o seguinte erro aparece:
java/lang/NoClassDefFoundError: java/lang/Object
Pesquisei por aí e percebi que esse erro acontece muito e por infinitas razões, mas sera que o problema não é devido ao meu projeto não executar como um todo? Ou seja, no NetBeans eu executo primeiro a classe Servidor, depois, manualmente executo a classe Cliente. Se tentar executar como um projeto não da certo.
Para criar um jar auto-executável, esse jar precisa conter um diretório META-INF com um arquivo MANIFEST.MF, que contém características do seu programa.
Exemplo de MANIFEST.MF:
Manifest-Version: 1.0
Created-By: Fulanus da Silva
Class-Path: .
Main-Class: com.pacote.Classe
É importante que existam umas três linhas vazias no final do arquivo manifest.
No seu caso, como é um cliente e um servidor é interessante que cada um deles esteja em seu próprio JAR, e o manifest de cada um vai iniciar uma classe própria (ex: a classe do servidor em um e a classe do cliente em outro).
Também é necessário que a JRE esteja corretamente instalada no seu sistema operacional e que nenhum outro programa tenha “roubado” a associação de arquivos .jar (ex: o WinRar costuma associar a extensão .jar a ele, e ao invés de o programa ser executado o WinRar abre o arquivo).
obs:
adicionalmente você pode executar “na mão” do prompt pra ver se há um stack trace do erro, tipo:
java -cp . -jar arquivo.jar com.pacote.Classe
Se o arquivo tiver um MANIFEST é desnecessário indicar a classe principal.
http://javafree.uol.com.br/artigo/1398/Usando-arquivos-jar.html
Fox McCloud;
Muito obrigada!
Fiz exatamente como vc sugeriu, criei um projeto para cada um, etc…
Agora por linha de comando não aparece nada, nem erro.
No duplo clique no jar, a mesma coisa…
Eu estava com um problema sobre minha classe principal não ser o Servidor, agora funcionou ok!
Muito obrigada!