java - 无法使用 Maven 在命令行上运行 jar 文件

标签 java maven jar terminal executable

我正在尝试运行一个已由 Maven 打包的 jar 文件。当我运行java -jar target/java-prac-1.0-SNAPSHOT.jar时我得到以下输出: no main manifest attribute, in target/java-prac-1.0-SNAPSHOT.jar

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>localdomain.localhost.tutorial</groupId>
    <artifactId>java-prac</artifactId>
    <version>1.0-SNAPSHOT</version>
    <dependencies></dependencies>

    <build>
        <plugins>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.6</source>
                    <target>1.6</target>
                    <manifest>
                       <mainClass>localdomain.localhost.tutorial.Main</mainClass>

                    </manifest>
                </configuration>
            </plugin>

        </plugins>
</build>
</project>           

我的 MANIFEST.MF 文件看起来像


Manifest-Version: 1.0                                                                                                            
Main-Class: localdomain.localhost.tutorial.Main

有趣的是,当我运行 ls target/classes 时,列出“META-INF/”文件夹。所以该文件似乎在jar文件中,java只是由于某种原因找不到它。

最佳答案

  1. 您可以将此插件添加到您的 pom.xml 文件
        <plugins>          
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.6</source>
                    <target>1.6</target>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <configuration>
                    <archive>
                        <manifest>
                            <addClasspath>true</addClasspath>
                            <!--add you main class-->
                            <mainClass>cn.lonecloud.RefDemo</mainClass>
                        </manifest>
                    </archive>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <executions>
                    <execution>
                        <id>copy</id>
                        <phase>install</phase>
                        <goals>
                            <goal>copy-dependencies</goal>
                        </goals>
                        <configuration>
                            <outputDirectory>
                                ${project.build.directory}
                            </outputDirectory>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-resources-plugin</artifactId>
                <configuration>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>
        </plugins>
  • 运行此命令
  • mvn compile package
    
  • 运行您的 jar 文件
  • java -jar target/java-prac-1.0-SNAPSHOT.jar
    

    关于java - 无法使用 Maven 在命令行上运行 jar 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55272267/

    相关文章:

    java - 如何在 Oracle Weblogic 管理员控制台上正确部署 EAR 文件

    web-applications - 输出 jar 中没有 webapp 文件夹

    java - 在Linux中,如何用外部jar文件执行Java jar文件?

    java - 什么是NullPointerException,我该如何解决?

    java - 在 SELECT 查询中从 JOIN 复制 BLOB 值是否会显着影响性能?

    java - 如何将我的 Collat​​z 序列代码停止在 1?

    java - 即使在 pom.xml 中定义,也无法导入 keycloak

    java - Hibernate Maven 增强插件配置

    java - ClassNotFoundException:通过 ANT 构建 JAR 文件中的主类

    java - 关于寻找链表的中间元素