当前位置: 首页 > 面试题库 >

如何在生成的jar文件的清单中指定主类?

都建树
2023-03-14
问题内容

我尝试使用Eclipse Maven构建具有依赖项的jar,但是当我执行时

java -jar App.jar

得到了错误:“未找到主要方法”

我的pom.xml看起来像这样:

<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>com.maventest</groupId>
    <artifactId>aproject</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>
    <name>aproject</name>
    <url>http://maven.apache.org</url>
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>
    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>3.8.1</version>
            <scope>test</scope>
        </dependency>

    </dependencies>
</project>

这只是一个简单的Java代码:

package com.maventest.aproject;

public class App {
    public static void main( String[] args ) {
        System.out.println( "Hello World!" );
    }
}

蚀版本:4.5.2

谁能帮我这个?谢谢。


问题答案:

您可以为此目的使用maven-jar-plugin。

<build>
    <plugins>
         <plugin>
            <!-- Build an executable JAR -->
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <version>${maven-jar-plugin.version}</version>
            <configuration>
                <archive>
                    <manifest>
                        <!-- <addClasspath>true</addClasspath> -->
                        <mainClass>twaren.elk.elkMaven.App</mainClass>
                    </manifest>
                </archive>
            </configuration>
        </plugin>
      </plugins>
</build>


 类似资料:
  • 问题内容: 我有以下问题。我的NetBeans IDE 6.8中有一个Java项目。当我编译它并生成一个包含所有可能的.jar文件时,META- INF是不正确的。它不包含要执行的类-使用main()方法。 当我单击IDE内的“运行”按钮时,一切正常。项目的设置也设置正确的方式-指向我的项目中的类。 我尝试添加带有清单文件的META-INF文件夹,但没有进行管理。 有没有一种方法可以在NetBea

  • 我测试了简单的scala程序并用calac编译了它 如果我运行java-cp。;scala图书馆。“jar测试”,它工作正常。是的,scala图书馆。jar文件在同一个目录中。 这是我的清单文件manifest.txt 我用罐子cfm Test.jarmanifest.txt 如果我解压生成的测试。jar文件和打开清单文件,它不包含主类字段。因此,它不能与java-jar测试一起运行。罐子 我可以

  • 问题内容: 我有以下问题。我的NetBeans IDE 6.8中有一个Java项目。当我编译它并生成一个包含所有可能的.jar文件时,META-INF是不正确的。它不包含要执行的类-使用main()方法。 当我单击IDE内的“运行”按钮时,一切正常。项目的设置也设置正确的方式-指向我的项目中的类。 我尝试添加带有清单文件的META-INF文件夹,但没有进行管理。 有没有一种方法可以在NetBean

  • 我已经看了几个不同的线程,没有找到解决方案。我做了一个项目,使用java和Gradle从google sheets检索数据。我已经创建了一个工件,并通过IntelliJ构建了jar文件。当我尝试使用“java-jar filename.jar”通过终端运行jar时,我得到“no main manifest attribute,in filename.jar” My Manifest.mf位于mai

  • 首先,我看了关于这个话题的类似问题。我还没有找到解决办法。 我想把我一直在做的一个小项目分发给朋友和家人。问题是我不能指望他们都能跑。类文件。因此,我正在努力创造一个新的世界。jar文件,我可以将其转换为。exe文件。然而,我遇到了一个问题。它抱怨缺少主清单属性。在谷歌搜索之后,我决定尝试一个小教程。我正在遵循教程(甚至下载了Hello.jar小文件),但仍然没有获得主清单属性。 当我运行Wind

  • 我知道有很多像这样的题目,但我没有找到答案我的问题。我已经在IntelliJ中创建了JAR文件,并在项目结构中构建了工件。在Java文件夹中,我有一个包META-INF和manifest.mf: 那么我是否应该将它手动添加到IntelliJ中的JAR中呢? Edit:CrazyCoder给出了一个很好的说明,说明META-INF应该在resourse文件夹中,但是我的IntelliJ默认设置一开始