Page 1 of 1

Nenhum atributo de manifesto principal ao executar jar do maven pom.xml

Posted: 28 Mar 2021, 23:15
by javanunes
Um erro muito comum ao se confeccionar um programa JAR com Maven é o infeliz rodar normal no netbeans mas fora dele dar problemas como
"Nenhum atributo de manifesto principal", isso se dá porque o burro do ambiente não sabe onde fica a sua classe principal (aquela que tem void main ) e tão pouco ele pergunta e grava qual que seria. Para resolver isso, em alguns casos você faz esses passos:

1) Clique com o botão direito no item do topo da árvore do projeto > Propriedades > Run > Browse , no campo main class procure a sua classe a deixe ali, não vai adiantar nada na maioria dos casos.

2) Entre na pasta do seu projeto, no caso, vamos fazer de conta que o nome do seu projeto é Bucetildes e a classe principal se chama PiquiRuido, então entre na pasta ~/NetBeansProjects/bucetildes/ e abra o famigerado arquivo pom.xml , dentro dele , depois da tag </modelVersion> :

Code: Select all


           <build>
              <plugins>
                  <plugin>
                    <artifactId>maven-assembly-plugin</artifactId>
                     <configuration>
                      <archive>
                          <manifest>
                            <mainClass>com.javanunes.Bucetildes.PiquiRuido</mainClass>
                          </manifest>  
                      </archive>
                      <descriptorRefs>
                            <descriptorRef>jar-with-dependencies</descriptorRef>
                      </descriptorRefs>
                    </configuration>
                   <executions>
                        <execution>
                            <id>make-assembly</id> 
                            <phase>package</phase> 
                            <goals>
                                <goal>single</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
              </plugins>
         </build>
    

  
Mude as tags mainClass , atifactld e version de acordo com o seu projeto.
Salve tudo, compile e TALVEZ dê certo, afinal, quando o assunto é Java , tudo que parece simples, pode dar errado num belo stacktracer


FORÇA BRUTA:
Se nada der certo, entre no zip jar com um programa para navegar em pastas zips, o thunar do Linux faz isso bem, depois dê um duplo clique no jar, ele abrirá o programa file-roller (tipo um winrar do Linux) , entre na pasta META-INF, edite dali mesmo o MANIFEST.MF colocando
nele a seguinte linha :

Code: Select all

Main-Class: com.javanunes.Bucetildes.PiquiRuido
Mudando main classe para o caminho completo da sua classe no caso. Salve e pronto.