kzen.dev
  • Perguntas
  • Etiquetas
  • Utilizadores
Notificações
Recompensas
Inscrição
Uma vez registado, será notificado das respostas e comentários às suas perguntas.
Entrar
Se já tem uma conta, inicie sessão para verificar novas notificações.
Haverá recompensas por perguntas, respostas e comentários adicionais.
Mais
Fonte
Editar
 Ewoud
Ewoud
Question

Can't execute jar-file: "nenhum atributo manifesto principal"

Eu instalei uma aplicação, quando tento executá-la (it's um jarro executável) nada acontece. Quando eu o executo a partir da linha de comando com:

java -jar "app.jar"

Eu recebo a seguinte mensagem:

nenhum atributo manifesto principal, in "app.jar"

Normalmente, se eu mesmo tivesse criado o programa, eu teria adicionado um atributo de classe principal ao arquivo do manifesto. Mas neste caso, como o arquivo é de uma aplicação, eu não posso fazer isso. Eu também tentei extrair o frasco para ver se conseguia encontrar a classe principal, mas existem muitas classes e nenhuma delas tem a palavra "main" nele's name. Deve haver uma maneira de corrigir isso porque o programa roda bem em outros sistemas.

861 2012-03-13T18:20:40+00:00 3
 g00glen00b
g00glen00b
Pergunta editada :em
Programação
main
java
jar
manifest
Esta pergunta tem 1 resposta em inglês, para as ler iniciar sessão à sua conta.
Olivier Refalo
Olivier Refalo
13º março 2012 в 6:27
2012-03-13T18:27:50+00:00
Mais
Fonte
Editar
#15669746

Primeiro, it's um pouco estranho, ver você executar java -jar "app" e não `java -jar app.jar'.

Segundo, para tornar um frasco executável... você precisa de um frasco chamado META-INF/MANIFEST.MF

o arquivo em si deve ter (pelo menos) este revestimento:

Main-Class: com.mypackage.MyClass

Onde `com.mypackage.MyClass' é a classe que detém o public static void main(String[] args) ponto de entrada.

Note que há várias maneiras de fazer isso com o CLI, Maven, Formiga ou Gradle:

Para **CLI***, o seguinte comando serve: (tks @dvvrt)

jar cmvf META-INF/MANIFEST.MF <new-jar-filename>.jar <files to include>

Para Maven, algo como o seguinte trecho deve fazer o truque. Note que esta é apenas a definição do plugin, não o pom.xml completo:

<build>
  <plugins>
    <plugin>
      <!-- Build an executable JAR -->
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-jar-plugin</artifactId>
      <version>3.1.0</version>
      <configuration>
        <archive>
          <manifest>
            <addClasspath>true</addClasspath>
            <classpathPrefix>lib/</classpathPrefix>
            <mainClass>com.mypackage.MyClass</mainClass>
          </manifest>
        </archive>
      </configuration>
    </plugin>
  </plugins>
</build>

(Escolha um <version> apropriado ao seu projeto).

Para **Ant***, o trecho abaixo deve ajudar:

<jar destfile="build/main/checksites.jar">
  <fileset dir="build/main/classes"/>
  <zipfileset includes="**/*.class" src="lib/main/some.jar"/>
  <manifest>
    <attribute name="Main-Class" value="com.acme.checksites.Main"/>
  </manifest>
</jar>

Créditos Michael Niemand -

Para **Gradle***:

plugins {
    id 'java'
}

jar {
    manifest {
        attributes(
                'Main-Class': 'com.mypackage.MyClass'
        )
    }
}
bernard paulus
bernard paulus
Resposta editada :em
Maven Central Repository Search
Official search by the maintainers of Maven Central Repository
search.maven.org
834
0
 Jesper
Jesper
13º março 2012 в 6:27
2012-03-13T18:27:10+00:00
Mais
Fonte
Editar
#15669745

Isso deveria ter sido java -jar app.jar em vez de java -jar "app".

A opção -jar' só funciona se o arquivo JAR for um arquivo JAR executável, o que significa que ele deve ter um arquivo manifesto com um atributoMain-Class' nele. Veja Packaging Programs in JAR Files para aprender como criar um arquivo JAR executável.

Se ele'não é um JAR executável, então você'precisará executar o programa com algo parecido:

java -cp app.jar com.somepackage.SomeClass

onde com.somepackage.SomeClass' é a classe que contém o métodomain' para executar o programa. (O que essa classe é depende do programa, é's impossível de dizer a partir da informação que você've forneceu).

Lesson: Packaging Programs in JAR Files (The Java&trade; Tutorials &gt; Deployment)
This deployment Java tutorial describes development and deployment of applets, Java Web Start applications, rich Internet applications, and JAR related tools
docs.oracle.com
251
0
John M
John M
13º março 2012 в 6:24
2012-03-13T18:24:45+00:00
Mais
Fonte
Editar
#15669744

Se o frasco está't seguindo as regras, ele's não é um frasco executável.

John M
John M
Resposta editada :em
JAR File Specification
docs.oracle.com
6
0
Comunidades relacionadas 3
JAVA Brasil
JAVA Brasil
601 utilizadores
Abrir telegram
Java & Spring Boot
Java & Spring Boot
601 utilizadores
Objetivo aproximar Profissionais e Estudantes Java e Spring Boot. Whatsap > encurtador.com.br/dtuvH Link do grupo IT JOBS - Empregos TI https://t.me/ITJOBS_EMPREGOSTI 👏 "Seja Bem Vindo" 👏 ➡️ REGRAS GERAIS ⬅️ 👎 PROIBIDO: 🚫 3. Conteúdo Fora do tema
Abrir telegram
Java Brasil
Java Brasil
191 utilizadores
Poste codigo no https://replit.com/, github ou qualquer outro site de postagem de codigos para facilitar.
Abrir telegram
Adicionar pergunta
Categorias
Todos
Tecnologia
Cultura / Recreação
Vida / Artes
Ciência
Profissional
Negócios
Utilizadores
Todos
Novo
Popular
1
Mansur Zakirov
Registrado há 1 dia
2
Тагир Мамедов
Registrado há 3 dias
3
Алексей Толманов
Registrado há 3 dias
4
Valeriu Vodnicear
Registrado há 1 semana
5
Alex Johnson
Registrado há 2 semanas
BG
DE
EL
ES
FR
HU
ID
IT
JA
KO
NL
PL
PT
RU
SK
SL
TR
ZH
© kzen.dev 2023
Fonte
stackoverflow.com
sob licença cc by-sa 3.0 com atribuição