gpt4 book ai didi

java - maven 没有正确添加主类

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:45:02 24 4
gpt4 key购买 nike

我想用 Maven 编译我的 Java 项目,但它没有将主类添加到 list 文件中。所以我不能在 intellij 之外运行 jar。我已将主类添加到我的 pom.xml,但它没有显示在 list 文件中。

我在Win10机器和maven3(IntelliJ IDEA 2018.3.1/plugins/maven/lib/maven3)上使用intellij的构建功能。

如果我运行 jar,我会得到错误

$java -jar myJar.jar
kein Hauptmanifestattribut, in myJar.jar

(德语为:在 myJar.jar 中没有主要 list 属性,我不知道确切的英文翻译,但它的意思是:没有指定主要类 )

我已经尝试了几个 maven 插件(maven-compile、maven-jar、maven-shade)和指定主类的方法,但没有一个将它添加到 list 文件中。我让它工作的唯一方法是当我添加行时

Main-Class: Main

手动。

我的 pom 文件(是的,我的主类名为 Main 是的,当我手动添加它时它工作正常)

...

<groupId>com.myname</groupId>
<artifactId>myProject</artifactId>
<version>1.0-SNAPSHOT</version>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<mainClass>Main</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
</plugins>
</build>

<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>

...

list 文件

Manifest-Version: 1.0
Archiver-Version: Plexus Archiver
Built-By: dspicuzz
Created-By: Apache Maven 3.3.9
Build-Jdk: 1.8.0_65

如果我手动添加该行,它运行良好

Manifest-Version: 1.0
Archiver-Version: Plexus Archiver
Built-By: dspicuzz
Created-By: Apache Maven 3.3.9
Build-Jdk: 1.8.0_65
Main-Class: Main

但我无法让 maven 以这种方式为我生成它。

最佳答案

I'm using the build function of intellij on a Win10 machine and maven3 (IntelliJ IDEA 2018.3.1/plugins/maven/lib/maven3).

IntelliJ 的构建不会重新生成您的 jar 文件。尝试运行 package 目标来重新创建 jar 文件。

验证您的包名是否与您的目录结构匹配:com.mytest.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>com.myname</groupId>
<artifactId>runnable</artifactId>
<version>1.0-SNAPSHOT</version>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<mainClass>com.myname.Hello</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
</plugins>
</build>

<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>

</project>

你好.java

package com.myname;

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

运行:

C:\runnable>java -jar target\runnable-1.0-SNAPSHOT.jar
Hello

而且,这是由 maven-jar 插件生成的 list 文件:

Manifest-Version: 1.0
Archiver-Version: Plexus Archiver
Built-By: egallardo
Created-By: Apache Maven 3.3.9
Build-Jdk: 1.8.0_181
Main-Class: com.myname.Hello

同时检查您的源目录是否在 intellij 中正确标记(浅蓝色)此图像适用于无包版本。

enter image description here

这些是有关如何使用 IntelliJ 从头开始​​创建项目的分步说明:

  • 创建新项目
  • 选择 Maven
  • 选择您的 SDK(Java 1.8 左右)
  • 不要选中“从原型(prototype)创建”
  • 点击下一步
  • 组号:com.myapp
  • Artifact ID:可运行
  • 版本:1.0-SNAPSHOT(默认)
  • 点击下一步
  • 项目名称:可运行(默认)
  • 项目位置:C:\code\java\runnable
  • 点击完成
  • 如果出现提示,请选择“启用自动导入”
  • 复制并粘贴 <build><properties> pom.xml 文件的部分
  • 展开runnable -> src -> main -> java
  • 右键单击 java 文件夹并单击新建 -> java 类
  • 键入 Main 作为新类名和种类:类(默认)
  • 输入psvm并点击tab生成main方法
  • 添加打印语句:System.out.println("Hello");
  • 使用maven tab双击打包
  • 将在 C:\code\java\runnable\target\runnable-1.0-SNAPSHOT.jar 中创建 jar 文件
  • 尝试运行它:

java -jar C:\code\java\runnable\target\runnable-1.0-SNAPSHOT.jar

检查 jar 文件日期是否与您单击包的时间相匹配。如果上述方法不起作用,您可能发现了一个错误。尝试不同的 JDK 版本。

关于java - maven 没有正确添加主类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55849719/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com