错误:“Elevator.jar 中没有主要清单属性”

Posted

技术标签:

【中文标题】错误:“Elevator.jar 中没有主要清单属性”【英文标题】:Error: "no main manifest attribute, in Elevator.jar" 【发布时间】:2021-08-16 02:25:52 【问题描述】:

我正在开发一个私人 Discord 机器人,我在其中使用 json 文件来存储值。我的机器人在 IntelliJ 中完美运行。我使用 Artifact 功能创建了一个 .jar 文件,但是当我尝试运行它时,出现错误:no main manifest attribute, in Elevator.jar。我使用 Git bash 使用命令 java -jar Elevator.jar 运行它。我使用 maven、一个 json 库和一个 JDA 库(用于 Discord 集成)。

我的 pom.xml 文件是否错误,或者我不能将 json 文件用于 .jar?如果是这样,我如何在不运行 intellij 的情况下执行我的代码?如果我需要添加更多代码或提供更多信息,请询问。

注意事项:

包裹是sebastiaan.Elevator 我使用了文件 -> 项目结构 -> 工件 -> 添加 -> JAR -> 来自具有依赖关系的模块,选择了正确的主类并按下确定。然后我点击 Build -> Build Artifact -> Build 创建文件

picture of my jar file (using winrar)

picture of my jar file META-INF folder

我的 MANIFEST.MF:

Manifest-Version: 1.0
Main-Class: sebastiaan.Elevator.Main

我的 pom.xml:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>groupId</groupId>
    <artifactId>Elevator</artifactId>
    <version>1.0-SNAPSHOT</version>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
        </plugins>
    </build>
    <dependencies>
        <dependency>
            <groupId>com.googlecode.json-simple</groupId>
            <artifactId>json-simple</artifactId>
            <version>1.1.1</version>
        </dependency>
    </dependencies>
    <properties>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
    </properties>
</project>

【问题讨论】:

你把清单文件放在哪里了?您是否检查过它是否已打包到 jar 文件中,例如通过使用 zip 文件查看器查看它? maven-compiler-plugin首先有sourcetarget8,然后是5。可能是它的一个问题。 @Thomas 当我查看 META-INF/MANIFEST.MF 时,我得到:``` Manifest-Version: 1.0 Archiver-Version: Plexus Archiver Created-By: Apache Maven Built-By: Benjamin Build-Jdk: 1.4.2_19 ``` 我不知道该怎么做,如果这正确与否(我不是 Benjamin) @AnsarOzden 我尝试删除 5 但它破坏了我的程序(奇怪的错误) 见maven.apache.org/plugins/maven-compiler-plugin/examples/…尝试1.8而不是8 【参考方案1】:

你需要在 pom.xml 中添加一个主类清单

<build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        ...
        <configuration>
          <archive>
            <manifest>
              <addClasspath>true</addClasspath>
              <mainClass>fully.qualified.MainClass</mainClass>
            </manifest>
          </archive>
        </configuration>
        ...
      </plugin>
    </plugins>
  </build>

查看更多示例here

【讨论】:

以上是关于错误:“Elevator.jar 中没有主要清单属性”的主要内容,如果未能解决你的问题,请参考以下文章

Informix 错误:发生了语法错误。错误代码:-201

我收到一个错误:“MetaMask - RPC 错误:错误:错误:[ethjs-rpc] rpc 错误与有效负载”

错误精灵错误跟踪器错误

网页打开显示错误500是啥意思

PHP错误处理

PHP的错误处理