运行java jar - 没有主清单属性错误

时间:2017-08-27 06:02:45

标签: java maven intellij-idea pom.xml

我创建了简单的java程序(maven with pom),当我用CMD运行一些命令时,它应该在给定路径下创建一个文件...我做mvn clean install 成功完成, 现在我想从命令行使用这个创建的jar,如下面的那样:

java -jar   "/Users/i012/IdeaProjects/myproj/target/test.rts-1.0-SNAPSHOT.jar" path2genfile2create 

哪个应该运行我的程序(这是我第一次尝试这样的东西......)

但我得到的错误是:

no main manifest attribute, in /Users/i012/IdeaProjects/myproj/target/test.rts-1.0-SNAPSHOT.jar

这里可能缺少什么?哪个清单属性

错误不是来自我创建的课程 ...

我创建了一些META-INF / MANIFEST.MF没有帮助,但可能是错误的

5 个答案:

答案 0 :(得分:8)

如果您正在使用Maven程序集插件或IDE工具,则需要#include <stdio.h> void main() { char ch = '?'; float f; double a = 10.00, b = 20.00; int i; for (i = 0; i < 10; i++) { scanf("%c", &ch); switch (ch) { case '+': f = a + b; printf("f = %.0f\n", f); break; case '-': f = a - b; printf("f = %.0f\n", f); break; case '*': f = a * b; printf("f = %.0f\n", f); break; case '/': f = a / b; printf("f = %.2f\n", f); break; default: printf("invalid operator\n"); } } return 0; } 元素。这就是我使用的:

mainClass

答案 1 :(得分:4)

清单是jar中路径META-INF / MANIFEST.MF中的一个文件,它定义了类路径和运行jar文件的主类等属性。

基本结构如下:

Manifest-Version: 1.0
Created-By: 1.7.0_06 (Oracle Corporation)

您可以通过添加属性Main-Class: classname来定义入口点。

为了使用给定的清单创建jar文件,您可以:

  1. 使用IDE将清单添加到它生成的jar中。
  2. 使用jar cfm MyJar.jar Manifest.txt MyPackage/*.class之类的命令手动创建具有给定清单和类的jar。
  3. 手动解压缩jar,添加清单,然后再次压缩它。压缩工具通常可以通过拖放操作来完成此操作。
  4. 您可以找到有关jar清单文件 here 的更多信息。

答案 2 :(得分:2)

在我的情况下,我使用的是spring-boot,但我没有在我的pom中提到我的构建器,所以我修复了它:

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

答案 3 :(得分:1)

我遇到了同样的问题,通过添加这个插件解决了:

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <configuration>
                <archive>
                    <manifest>
                        <mainClass>com.somepackage.CLASSWITHMAINMETHODE</mainClass>
                    </manifest>
                </archive>
            </configuration>
        </plugin>

答案 4 :(得分:0)

您需要一个主类来执行您的应用程序。请尝试以下方法。它对我有用。

如果使用的是maven构建工具,请将以下代码段添加到pom.xml文件中。

 <packaging>jar</packaging>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>1.7</maven.compiler.source>
        <maven.compiler.target>1.7</maven.compiler.target>
    </properties>

    <build>
        <plugins>

        <plugin>
            <artifactId>maven-assembly-plugin</artifactId>
            <configuration>
                <archive>
                    <manifest>
                        <mainClass>com.validator.App</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>