Problema com arquivo .jar

21 respostas Resolvido
E

Gerei um arquivo .jar usando o intellij e quando vou acessar (java -jar “arquivo.jar”) sempre retorna o erro:

não foi possível localizar nem carregar a classe principal.

Já pesquisei diversas fontes mas nenhuma resolveu meu problema. O que pode estar acontecendo?

21 Respostas

FearX

Você usou o Gradle/Maven?
No meu caso, eu uso o Gradle. Na task de GERAR O JAR, é preciso declarar qual sua main class no build.gradle

task buildJar(type: Jar) {
    manifest {
        attributes 'Implementation-Title': project.name,
                'Implementation-Version': version,
                'Main-Class': 'aqui_vai_seu_main'
    }

    baseName = project.name
    doFirst {
        from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } }
    }
    exclude 'META-INF/*.RSA', 'META-INF/*.SF','META-INF/*.DSA'
    with jar
}

Por exemplo, essa é minha task do Gradle pra gerar um jar.

peczenyj

quando vc gera o jar vc apenas pega todos os .class e gera um arquivo zip + um arquivo com algumas definições

se vc quer gerar um jar executavel, vc tem q colocar esse arquivo de definições qual é a “main class”.

provavelmente vc tem outra opção (talvez escondida) pra isso

outra forma é vc informar ao java qual classe vc quer executar tipo

java -jar arquivo.jar a.b.c.d.Classe

onde a.b.c.d é um exemplo do nome do pacote completo da classe

E

eu fiz assim: eu criei um artefato no intellij. Depois de configurar o artefato eu vou em build, artefato, ai cria uma pasta uma META-INF com o arquivo MANIFEST.MF com os linhas

Manifest-Version: 1.0
Main-Class: classpath.class

seu eu acessar o jar criado eu vejo a main classe lá. Mas quando executo o comando ele continua dando o erro.

Meu programa usa maven

peczenyj

isso não parece estar certo. parece um valor padrão que vc tem que substituir…

E

Só exemplifiquei
Na verdade esta assim
Main-Class com.empresateste.Teste (minha main class se chama teste)

FearX

tá faltando os “:” na frente do Main-Class

Main-Class: com.empresateste.Teste

E

Segue o projeto no git, ele é bem pequeno. Se alguém puder testar e dar o feedback serei muito grato.
https://github.com/rodrigodevelms/gaia_servidor_de_configuracao

peczenyj

eu acho que tem uma quebra de linha onde não deve nesse arquivo

E

Havia visto isso também. Corrigi a quebra de linha e o erro persiste.
Tentei criar um projeto do zero, sem absolutamente nada. deu o mesmo erro.
Será que pode ser a IDE que está com algum bug para gerar? Ainda não tentei por linha de comando.

peczenyj

experimenta criar uma classe chamada App ao inves desse nome gigante e ve o que acontece

E

Tentei. Sem sucesso.
Tentei trocar o jdk (open para oracle, o erro continua). Agora vou tentar gerar o jar por linha de comando

peczenyj

cara tem algo muito errado ai.

sera que vc não gerou esse arquivo uma vez e agora ele continua existindo pois é brasileiro e não desiste nunca?

apaga esse arquivo e tenta gerar de novo.

darlan_machado

E por quê você não faz a geração do artefato pelo próprio maven?

E
Solucao aceita

Pela bendito mal que me persegue, caro amigo: PRATICIDADE!;

Deu certo. O que fiz:
1 - Dei um pull no imagem do alpine (uma imagem linux extremamente leve)
2 - criei um conteiner, instalei o openjdk8 e o maven
3 - mapiei um volume logico com o meu projeto
4 - rodei mvn package -Dmaven.test.skip=true (pular os teste)
5 - naveguei até o diretorio onde o maven criou o jar e fiz java -jar nome_do_jar_criado.jar
6 - funcionou.

Esse filho nasceu e foi sem anestesia.
Obrigado a todos que tentaram ajudar. Um grande abraço

Caro peczenyj realmente tem algo muito errado. Mas só depois do almoço vejo esse BO.

darlan_machado

Mais simples que um

mvn clean package

???
Clonei teu repo e executei o comando acima. Bingo, gerou, mandei um java -jar e executou. E aí?

E

C acredita que tentei isso e não foi.

peczenyj

cara acontece

to eu aqui tentando debuggar um request q não mostrava nada pq justamente o retorno era 204 No Content

darlan_machado

Leva na encruzilhada, deixa uns charutos, uma cachaça e depois passa na igreja…

E

Bem isso :smiley:
Uma pergunta bem simples e iniciante, com o mvn clean package com escolho o diretório que o jar será criado?

darlan_machado

Ele gera dentro do projeto, em target.
Aí é só mover.

E

Sim sim… eu sabia fazer modificando o POM

<build>
	<finalName>Spring Examples</finalName>
	<resources>
		<resource>
			<directory>src/main/resources</directory>
		</resource>
		<resource>
			<directory>src/main/config</directory>
		</resource>
	</resources>
</build>

mas queria saber se tem como através do próprio comando, nunca achei, então acho que não tem.
No mais, obrigado mais uma vez, peczenyj e a darlan

Criado 12 de setembro de 2018
Ultima resposta 12 de set. de 2018
Respostas 21
Participantes 4