Criar JAR!? Já tentei de tudo... [RESOLVIDO]

PessoALL,

Sei que esta dúvida é extremamente recorrente no forum; no entanto, lendo os tópicos ainda não consegui solucionar o meu problema…

Desenvolvi um SW que roda perfeitamente pela IDE (Eclipse) e meu PC roda outras Jar (de outros projetos) normalmente tb. Mas quando tento criar a minha JAR deste projeto, via prompt, aparece o seguinte erro:“Failed to load Main-Class manifest attribute from Teste.jar”

Ou seja, por algum motivo o amigo não consegue encontrar a referência para o meu main (classe)… Mas vamos ao que interessa:

  • Este é o diretório de meu projeto: C:\Projeto_Java_Eclipse\Projeto
  • Meu source main (.java) está neste diretório: C:\Projeto_Java_Eclipse\Projeto\src\br\sc\empresa\proj\aplicacao
  • Minha classe main (.class) está neste diretório: C:\Projeto_Java_Eclipse\Projeto\bin\br\sc\empresa\proj\aplicacao

Pois bem, criei o arquivo “manifest.mf” no diretório de meu projeto (C:\Projeto_Java_Eclipse\Projeto) e estou neste arquivo referenciando o meu main (.class), desta maneira:

Manifest-Version: 1.6.0_13
Main-Class: bin.br.sc.empresa.proj.aplicacao.Principal

A versão está correta, já conferi pelo prompt…E “Principal” de fato é a minha classe que possui o main…

Gero o JAR (Teste.jar) pelo Export do Eclipse (versão 3.3.0), no entanto o erro continua aparecendo:“Failed to load Main-Class manifest attribute from Teste.jar”

Alguém sabe o que pode estar ocorrendo???

Obrigado!!!

Olá!

Pelo o q puder ver, tem coisa a mais no Main-Class.

Tira o bin. Deixa só Main-Class: br.sc.empresa.proj.aplicacao.Principal. Isso deve resolver seu problema.

Abraços!

Olá André,

Infelizmente não resolveu não… :frowning:

Oi,

Na realidade… seu MF deverá ficar assim:

Manifest-Version: 1.6.0_13 Sealed: true Main-Class: bin.br.sc.empresa.proj.aplicacao.Principal

Faz o seguinte (Vamos criar um MF).:

1º Entre em seu eclipse;
2º Clique com o botão direito do mouse no seu projeto;
3º Na tela Export, selecione Java->JAR file;
4º Deixe selecionado apenas o pacote principal;
5º Digite um caminho para o seu jar;
6º Clicar em Next;
7º Clicar em Next;
8º Na janela de: Manifest Specification, deixe marcado a opção: Generate the manifest file e Save the manifest in the workspac;
9º Em Browse selecione aonde você irá jogar seu MF e escolha o nome para o mesmo;
10º Marque a opção Seal contents -> Seal Some packages;
11º Busque sua main class;
12º Clicar em Finish;

Pronto, o proprio programa criou seu MF! de uma olhada e verifique como ele está!

Tchauzin!

Olá,

Existem dois problemas com esse JAR:
Não podem existir as pastas bin e src, os diretórios de classes (br) vão direto na raiz.
e
O MANIFEST.MF deve ficar no diretório META-INF

Faça como na dica acima, crie através do Eclipse que não tem erro.

Obrigado a todos pelas respostas…

Lina, valew mesmo, realmente com os passos citados por ti o JAR é gerado sem demais problemas; MAS…

Meu programa abre uma tela inicial e realiza a leitura da serial do PC. Utilizo o “comm.jar” para tanto e está ocorrendo um problema (exceção) quando inicializo o meu programa (apenas ao tentar executá-lo pela JAR recém-criada, via RUN da IDE tudo funciona “bunitinho”)

Executando o meu JAR pelo prompt, recebo as seguintes mensagens de erro:

“Exception in thread “main” java.lang.NoClassDefFoundError: javax/comm/SerialPortEventListener” Etc…etc…etc…

Ou seja, ao que tudo indica, não estou conseguindo indicar o “comm.jar” quando estou criando o executável de meu projeto. Pois bem, tenho um diretório “lib” contendo o “comm.jar” entre outras JAR ao qual incluo no momento de gerar o executável de meu projeto. No entanto, mesmo estando fisicamente este arquivo (comm.jar) nesta pasta (olhando pelo explore consigo visualizá-lo), não consigo enxergá-lo no momento que estou criando o meu executável (indo, obviamente, até a pasta lib no instante que estou criando o meu jar).

Penso talvez ser este o problema…Alguém tem alguma idéia?

Oi,

Então… para a manipulação da Serial deverá ter 3 aquivos (eu acho).:

win32com.dll que ficará na pasta JRE\bin javax.comm.properties que ficará na pasta JRE\lib comm.jar que ficará na pasta JRE\lib\ext

Seu jar não precisa conter esses arquivos (Mas se quiser tudo bem), pois rodará de forma independente!

Quando executar sua aplicação jar pelo prompt, você deverá utilizar o java onde você colocou os arquivos.

Obs: Não sei se fui muito clara.

Exemplo.:

  • Tenho aqui na minha maquina uma pasta chamada C:\Arquivos de Programas\Java\jre6
  • Será nessa pasta que posicionarei os 3 arquivos para comunicação serial (conforme a legenda que coloquei no inicio)
  • Quando for executar minha aplicação jar, (se no meu path não está adicionado essa minha pasta java) deverei fazer:

C:>C:\Arquivos de Programas\Java\jre6\bin\java -jar Aplicacao.jar

Ou seja, estou executando meu jar com o JAVA que instalei os arquivos de comunicação serial. Funcionando corretamente!

Diferente de fazer no ms-dos apenas C:>java -jar Aplicacao.jar

uffa…

Tchauzin!

Lina, você vai para o céu sabia!? (não sei se é a sua intenção… :twisted: ehehhehe)

Muito obrigado novamente…De certo!!! :lol:

[]'s

Oi,

Claro que eu quero ir pro ceu =P

Apenas continue participando do forum e ajudando!
ficarei muito feliz se você nunca desistir!

Tchauzin!