[Dúvida] Geração de aplicativo ".Jar"

Prezados, boa tarde.
Quando tento executar o aplicativo .jar gerado, me deparo com o seguinte erro: “Cold not find the main class: Principal. Program will exit.”

Eu fiz exatamente o que o livro orientou.
Criei um arquivo “Manifest.txt”, digitei nele: “Main-Class: Principal” (Apertei o enter e salvei)
Ele ficou uma pasta acima de onde ficam as classes. Executei no MS-dos isso: “jar -cvmf manifest.txt Teste.jar classes”

Segue em anexo o .jar gerado,
Ele tem a pasta Meta-Inf e a pasta Classes onde estão dois simples arquivos .class (Programinha com um simples println, apenas para testar a geração do .jar)

Alguem pode me ajudar a descobrir o que estou fazendo de errado, que não está sendo executado o .Jar?

Desde já agradeço,
Ótima semana a todos.

Acho que é MANIFEST.MF, e não MANIFEST.TXT

Não amigo.
Após a geração do comando que informei acima, o Manifest do arquivo .Jar fica no formato correto.
Qualquer dúvida, só extrair o manifest.mf do arquivo em anexo :wink:

Dei uma olhada no seu jar. Por acaso sua classe está no pacote “classes” ou “classes” é só o diretório onde você gerou as classes?

C:\Temp>unzip -l teste.jar
Archive:  teste.jar
  Length     Date   Time    Name
 --------    ----   ----    ----
        0  23-09-10 17:34   META-INF/
       94  23-09-10 17:34   META-INF/MANIFEST.MF
        0  23-09-10 17:25   classes/
      938  23-09-10 17:28   classes/Heranca.class
      490  23-09-10 17:27   classes/Principal.class
 --------                   -------
     1522                   5 files

Se for a alternativa 2 (as classes estão no pacote default, e classes é só o nome do diretório) você teria de ter um jar que, aberto, teria o seguinte layout:

C:\Temp>unzip -l teste.jar
Archive:  teste.jar
  Length     Date   Time    Name
 --------    ----   ----    ----
        0  23-09-10 17:34   META-INF/
       94  23-09-10 17:34   META-INF/MANIFEST.MF
      938  23-09-10 17:28   Heranca.class
      490  23-09-10 17:27   Principal.class
 --------                   -------
     1522                   5 files

Como é que você faz isso? Normalmente você executaria o jar.exe dentro do diretório classes, não fora.

Então, classes é realmente o nome do pacote.
Tanto que no código das duas classes eu utilizo o “package classes;” hehe

Boa noite,
Entanglement, “classes” é realmente o pacote ao qual se encontram as classes.
Qualquer coisa, da uma olhada no código das classes que vc irá ver que declarei o package lá hehe.

Você precisa mencionar o nome completo da classe.

Main-Class: classes.Principal