我想用maven编译我的Java-Project,但是它没有将主类添加到清单文件中。所以我不能在intellij之外运行jar。我已经将主类添加到了pom.xml中,但未在清单文件中显示。
我正在Win10机器和maven3(IntelliJ IDEA 2018.3.1 / plugins / maven / lib / maven3)上使用intellij的构建功能。
如果我运行罐子,我会收到错误消息
val shareIntent = Intent(Intent.ACTION_SEND)
shareIntent.apply {
setPackage(YOUTUBE_PACKAGE)
type = "video/*"
putExtra(Intent.EXTRA_TITLE, title)
putExtra(Intent.EXTRA_SUBJECT, shareMessage)
putExtra(Intent.EXTRA_STREAM, videoUri)
}
(德语为:在myJar.jar 中没有主清单属性,我不知道确切的英语翻译,但这意味着:未指定主类 )
我尝试了服务器式Maven插件(maven-compile,maven-jar,maven-shade)和指定主类的方法,但没有一个将其添加到清单文件中。我要使它起作用的唯一方法是当我添加线
$java -jar myJar.jar
kein Hauptmanifestattribut, in myJar.jar
用手。
我的pom文件(是的,我的主类叫做 Main ,是的,当我手动添加它时,它工作正常)
Main-Class: 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>
...
如果我手动添加该行,则运行正常
Manifest-Version: 1.0
Archiver-Version: Plexus Archiver
Built-By: dspicuzz
Created-By: Apache Maven 3.3.9
Build-Jdk: 1.8.0_65
但是我无法让Maven以这种方式为我生成它。
答案 0 :(得分:1)
我正在Win10机器和maven3上使用intellij的构建功能 (IntelliJ IDEA 2018.3.1 / plugins / maven / lib / maven3)。
IntelliJ的构建不会重新生成您的jar文件。尝试运行软件包目标以重新创建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>
Hello.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插件生成的清单文件:
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(浅蓝色)。此图像用于无包装版本。
这些是有关如何使用IntelliJ从头开始创建项目的分步说明:
<build>
和<properties>
部分复制并粘贴到pom.xml文件中 java -jar C:\code\java\runnable\target\runnable-1.0-SNAPSHOT.jar
检查jar文件的日期是否与单击包时的时间匹配。 如果上述方法不起作用,则可能是您发现了一个错误。尝试使用其他JDK版本。