Erro: Could not find the Main Class: "CLASSE". The program will now exit
19 respostas
E
ElvisCamilo
Pessoal, to com esse erro !@#!*@ que já tá me dando dor de cabeça. Sempre quando compilo o programa pra gerar o Jar, e tento executa-lo (o jar), dá esse maldito erro, pórem, se eu executo o programa direto de dentro do NetBeans ele funciona.
Já tentei re-instalar o Netbeans e instalar versão antiga, já fiz o mesmo com o JDK, já criei um projeto novo, copiei manualmente o código fonte de todas as classes pro novo e ainda assim continua dando problema.
Ele nao acha a sua classe que contem o metodo main, creio que basta voce alterar dentro do arquivo project.properties a propriedade main.class com o nome da sua classe que possui o metodo main.
E
ElvisCamilo
main.class=principal.Main
Mas no arquivo a informação está correta. Mesmo assim ele fala que não encontrou a classe.
E
ElvisCamilo
Esse erro é muito estranho. Pra você ter uma idéia:
Eu tenho um objeto público na classe main, que é o seguinte:
Se eu o retirar, parece que funciona a compilação. :S
Mas o problema é que se eu o retirar de lá, vou ter que re-estruturar o meu código todo, e são mais de 10 mil linhas de código o sistema todo.
I
Ironlynx
Peraí, pelo que vc falou seu problema está na execução, certo?
E geralmente esse problema está associado a classpath.
Eu tive esse problema esse ano simplesmente por usar uma versão antiga da JDK.Ao atualizar para uma versão mais recente ele simplesmente funcionou.
Amigo, o seu problema está no seu arquivo .jar. Tive o mesmo problema a algum tempo atrás, e o que está acontecendo é o seguinte.
Quando você gera o .jar que é um arquivo compactado java, com todas as classes compiladas, dentro dele logicamente existe alguma informação de como deve ser executado. Isto é, qual classe deve ser chamada e pedida para a JVM executar. Pois bem, esta informação está dentro de um arquivo chamado MANIFEST.MF que fica dentro da pasta META-INF dentro do seu arquivo .jar.
A solução então é o seguinte:
Abra o seu arquivo .jar com o WinRAR e o deixe aberto.
Navegue pelo arquivo e entre na pasta META-INF e dentro dela abra o arquivo MANIFEST.MF com o WordPad, o bloco de notas ou qualquer outro editor de texto a sua escolha.
E nele, adicione ao final a seguinte informção: “Main-Class: [NomeDaSuaClasseComMain]” Sem aspas. Lembrando que deve ser informado o caminho completo. Por exemplo, se sua classe com Main está dentro do pacote PacoteQualquer deve ser colocado assim: “Main-Class: PacoteQualquer.[NomeDaSuaClasseComMain]”. Desta forma a JVM saberá qual classe executar quando o arquivo .jar for executado.
Feito isso, salve e diga ao WinRAR que quer atualizar as informação. Está janelinha muito provavelmente estará sendo exibida ao você salvar o arquivo e focar no aplicativo WinRAR. Então é só clicar em Atualizar e fechar o WinRAR.
Daí então, rode seu aplicativo novamente.
Espero ter ajudado. Qualquer outro problema, espero que nos procure novamente. (y)
E
ElvisCamilo
iagodantascg:
Amigo, o seu problema está no seu arquivo .jar. Tive o mesmo problema a algum tempo atrás, e o que está acontecendo é o seguinte.
Quando você gera o .jar que é um arquivo compactado java, com todas as classes compiladas, dentro dele logicamente existe alguma informação de como deve ser executado. Isto é, qual classe deve ser chamada e pedida para a JVM executar. Pois bem, esta informação está dentro de um arquivo chamado MANIFEST.MF que fica dentro da pasta META-INF dentro do seu arquivo .jar.
A solução então é o seguinte:
Abra o seu arquivo .jar com o WinRAR e o deixe aberto.
Navegue pelo arquivo e entre na pasta META-INF e dentro dela abra o arquivo MANIFEST.MF com o WordPad, o bloco de notas ou qualquer outro editor de texto a sua escolha.
E nele, adicione ao final a seguinte informção: “Main-Class: [NomeDaSuaClasseComMain]” Sem aspas. Lembrando que deve ser informado o caminho completo. Por exemplo, se sua classe com Main está dentro do pacote PacoteQualquer deve ser colocado assim: “Main-Class: PacoteQualquer.[NomeDaSuaClasseComMain]”. Desta forma a JVM saberá qual classe executar quando o arquivo .jar for executado.
Feito isso, salve e diga ao WinRAR que quer atualizar as informação. Está janelinha muito provavelmente estará sendo exibida ao você salvar o arquivo e focar no aplicativo WinRAR. Então é só clicar em Atualizar e fechar o WinRAR.
Daí então, rode seu aplicativo novamente.
Espero ter ajudado. Qualquer outro problema, espero que nos procure novamente. (y)
Adicionei: Main-Class: principal.Main no final do META-INF e mesmo assim deu problema.
E
ElvisCamilo
Peraí, pelo que vc falou seu problema está na execução, certo?
E geralmente esse problema está associado a classpath.
Eu tive esse problema esse ano simplesmente por usar uma versão antiga da JDK.Ao atualizar para uma versão mais recente ele simplesmente funcionou.
Já tinha feito algumas dessas sugestões aí e também deu erro. Já até refiz o meu projeto todo, copiando os códigos das classes e ainda assim tá dando erro.
I
iagodantascg
ElvisCamilo:
iagodantascg:
Amigo, o seu problema está no seu arquivo .jar. Tive o mesmo problema a algum tempo atrás, e o que está acontecendo é o seguinte.
Quando você gera o .jar que é um arquivo compactado java, com todas as classes compiladas, dentro dele logicamente existe alguma informação de como deve ser executado. Isto é, qual classe deve ser chamada e pedida para a JVM executar. Pois bem, esta informação está dentro de um arquivo chamado MANIFEST.MF que fica dentro da pasta META-INF dentro do seu arquivo .jar.
A solução então é o seguinte:
Abra o seu arquivo .jar com o WinRAR e o deixe aberto.
Navegue pelo arquivo e entre na pasta META-INF e dentro dela abra o arquivo MANIFEST.MF com o WordPad, o bloco de notas ou qualquer outro editor de texto a sua escolha.
E nele, adicione ao final a seguinte informção: “Main-Class: [NomeDaSuaClasseComMain]” Sem aspas. Lembrando que deve ser informado o caminho completo. Por exemplo, se sua classe com Main está dentro do pacote PacoteQualquer deve ser colocado assim: “Main-Class: PacoteQualquer.[NomeDaSuaClasseComMain]”. Desta forma a JVM saberá qual classe executar quando o arquivo .jar for executado.
Feito isso, salve e diga ao WinRAR que quer atualizar as informação. Está janelinha muito provavelmente estará sendo exibida ao você salvar o arquivo e focar no aplicativo WinRAR. Então é só clicar em Atualizar e fechar o WinRAR.
Daí então, rode seu aplicativo novamente.
Espero ter ajudado. Qualquer outro problema, espero que nos procure novamente. (y)
Adicionei: Main-Class: principal.Main no final do META-INF e mesmo assim deu problema. :(
Peraí. Você deve adicionar o “Main-Class: principal.Main” no final do arquivo MANIFEST.MF que fica dentro da pasta META-INF que está dentro do seu arquivo .jar. Foi isso que você fez? Sua classe principal é mesmo Main.class? E está dentro do pacote “principal”?
E
ElvisCamilo
iagodantascg:
ElvisCamilo:
iagodantascg:
Amigo, o seu problema está no seu arquivo .jar. Tive o mesmo problema a algum tempo atrás, e o que está acontecendo é o seguinte.
Quando você gera o .jar que é um arquivo compactado java, com todas as classes compiladas, dentro dele logicamente existe alguma informação de como deve ser executado. Isto é, qual classe deve ser chamada e pedida para a JVM executar. Pois bem, esta informação está dentro de um arquivo chamado MANIFEST.MF que fica dentro da pasta META-INF dentro do seu arquivo .jar.
A solução então é o seguinte:
Abra o seu arquivo .jar com o WinRAR e o deixe aberto.
Navegue pelo arquivo e entre na pasta META-INF e dentro dela abra o arquivo MANIFEST.MF com o WordPad, o bloco de notas ou qualquer outro editor de texto a sua escolha.
E nele, adicione ao final a seguinte informção: “Main-Class: [NomeDaSuaClasseComMain]” Sem aspas. Lembrando que deve ser informado o caminho completo. Por exemplo, se sua classe com Main está dentro do pacote PacoteQualquer deve ser colocado assim: “Main-Class: PacoteQualquer.[NomeDaSuaClasseComMain]”. Desta forma a JVM saberá qual classe executar quando o arquivo .jar for executado.
Feito isso, salve e diga ao WinRAR que quer atualizar as informação. Está janelinha muito provavelmente estará sendo exibida ao você salvar o arquivo e focar no aplicativo WinRAR. Então é só clicar em Atualizar e fechar o WinRAR.
Daí então, rode seu aplicativo novamente.
Espero ter ajudado. Qualquer outro problema, espero que nos procure novamente. (y)
Adicionei: Main-Class: principal.Main no final do META-INF e mesmo assim deu problema. :(
Peraí. Você deve adicionar o “Main-Class: principal.Main” no final do arquivo MANIFEST.MF que fica dentro da pasta META-INF que está dentro do seu arquivo .jar. Foi isso que você fez? Sua classe principal é mesmo Main.class? E está dentro do pacote “principal”?
Sim, isso mesmo.
Cara, é um erro muito estranho, nem meu professor conseguiu resolver analisando o meu projeto superficialmente, e duvido muito que algum monitor da faculdade vai conseguir. ):
Minha única esperança é vocês aqui.
I
iagodantascg
Elvis, tenta rodar o programa a partir da linha de comando. Muito provavelmente vai dar o mesmo erro, mas se for diferente já é algo novo para pensarmos sobre o que pode ser.
Para rodar o arquivo .jar o comando é: java -jar [NomeDoArquivo.jar]
Que universidade você está? E o curso?
E
ElvisCamilo
iagodantascg:
Elvis, tenta rodar o programa a partir da linha de comando. Muito provavelmente vai dar o mesmo erro, mas se for diferente já é algo novo para pensarmos sobre o que pode ser.
Para rodar o arquivo .jar o comando é: java -jar [NomeDoArquivo.jar]
Que universidade você está? E o curso?
Dá esse erro.
I
iagodantascg
Tenta tirar o ícone da tua classe usuario.painelPrincipal.
Se vc naum colocou nenhum. Abre o NetBeans, na aba “propriedades” da janela da classe painelPrincipal, tenta atribuir um valor qualquer a Icon Image e depois tira. Pra resetar.
Daí vc limpa e constrói o jar novamente, e altera o manifest.mf adicionando a mesma linha, e mais uma vez tenta executar.
Aparentemente o erro está aí. No javax.swing.IconImage que é chamado dentro desta classe usuario.painelPrincipal.
Universidade? Curso?
E
ElvisCamilo
iagodantascg:
Tenta tirar o ícone da tua classe usuario.painelPrincipal.
Se vc naum colocou nenhum. Abre o NetBeans, na aba “propriedades” da janela da classe painelPrincipal, tenta atribuir um valor qualquer a Icon Image e depois tira. Pra resetar.
Daí vc limpa e constrói o jar novamente, e altera o manifest.mf adicionando a mesma linha, e mais uma vez tenta executar.
Aparentemente o erro está aí. No javax.swing.IconImage que é chamado dentro desta classe usuario.painelPrincipal.
Universidade? Curso?
Ahh, desculpa. Não havia visto a pergunta sobre a universidade. Hehe. Faço Ciência da computação em uma universidade privada aqui em Minas Gerais, na Univerisade FUMEC (www.fumec.br).
Muito obrigado pela sua ajuda e dedicação, mas já consegui resolver o problema, e vou te falar que deu trabalho. Hehehe. Eu fui debugando o meu projeto arquivo por arquivo, função por função, até encontrar, milagrosamente, o erro. Parece que o problema tava com um Jbutton que eu havia criado para exibir a janela do cliente. Eu vi que quando eu apagava o JButton e compilava, na hora de abrir não dava erro, daí a única coisa que fiz foi refazer o botão.
Eu sempre soube que o NetBeans fosse bugado, mas não desse jeito. O.o
I
iagodantascg
Que bom que você conseguiu resolver.
Éh… O NetBeans é assim mesmo. -.- Jáh tive muita dor de cabeça com ele.
Também faço Ciência da Computação, na Universidade Federal de Campina Grande.
Enfim… Qualquer outro problema, estamos aqui. (y)
[]
D
davidbuzatto
Não sou defensor de IDE nenhuma e realmente o editor de interface gráfica do NetBeans tem lá os seus problemas, mas falar que a IDE é bugada só por causa disso é um pouco demais não é não?
I
iagodantascg
David, desculpa se te ofendi com isso. Não foi nem de longe minha intenção.
O que quero dizer e como você mesmo admitiu, o NetBeans tem seus problemas, e como em qualquer programa, um problema é um bug. E de forma alguma estou querendo dizer que o NetBeans é um mal IDE naum. Pelo contrário. Dependendo da tarefa eu recomendo-o mais do que qualquer um outro.
O NetBeans é um IDE bem completo e atende a TODAS as necessidade de qualquer um programador Java. Eu mesmo uso o NetBeans pelo o que ele me oferece, e jah passei muito tempo com outros IDE’s. E digo que com certeza jah passei mais tempo com ele do que se juntar o tempo que passei usando outros.
O fato é que, o NetBeans tem sim seus bugs. E que naum são tão poucos, pois jah presenciei muitos. Porém são bugs completamente convivíveis. Como por exemplo o nosso amigo Elvis. O NetBeans quebrou o codigo dele, mas quando ele identificou o erro, tudo voltou ao normal.
Espero ter esclarecido meu ponto de vista sobre o que disse anteriormente.
E mais uma vez, peço suas desculpas.
D
davidbuzatto
Oi iagodantascg,
Não fiquei ofendido não. É que esse tipo de comentário normalmente é o que basta para iniciar um flame.
[]´s
E
ElvisCamilo
iagodantascg:
Que bom que você conseguiu resolver.
Éh… O NetBeans é assim mesmo. -.- Jáh tive muita dor de cabeça com ele.
Também faço Ciência da Computação, na Universidade Federal de Campina Grande.
Enfim… Qualquer outro problema, estamos aqui. (y)
[]
Supimpa!
Valeu!
V
ViniGodoy
Só a título de informação ExceptionInInitializerError é um erro que dá quando uma exceção é disparada durante a construção de atributos estáticos de alguma das classes.
Provavelmente um dos seus ImageIcons estava apontando para um caminho de imagem inválido. Se você criou com o getResource, esse resource não existia e retornou null. O null então disparou a exception no ImageIcon.
Cuidado ao usar ImageIcons e o getResource, pois o nome de recursos dentro do .jar é case sensitive, enquanto fora do .jar, no Windows, não é. Por isso o programa pode funcionar no Netbeans, mas não no .jar. Então, procure copiar o nome do arquivo exatamente igual, tomando o cuidado de respeitar maiúsculas e minúsculas também.