jar IntelliJ中没有主清单属性



这个问题以前被问过很多次,但我尝试了所有的解决方案,但都不适用。

我正在尝试使用IntelliJ和Gradle构建一个简单的、单模块的.jar程序。这是我的build.gradle.kts文件:

plugins {
id("java")
}
group = ...
version = ...
repositories {
mavenCentral()
}
dependencies {
implementation("com.itextpdf:itext7-core:7.2.3")
implementation("jakarta.mail:jakarta.mail-api:2.1.0")
implementation("org.apache.commons:commons-csv:1.9.0")
implementation("commons-net:commons-net:3.8.0")
implementation("mysql:mysql-connector-java:8.0.30")
val slf4jVersion = "2.0.3"
implementation("org.slf4j:slf4j-api:$slf4jVersion")
implementation("org.slf4j:slf4j-simple:$slf4jVersion")
testImplementation("org.junit.jupiter:junit-jupiter-api:5.8.1")
testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine:5.8.1")
}
tasks.withType<Jar> {
manifest {
attributes["Main-Class"] = ...
attributes["Class-Path"] = configurations.runtimeClasspath.get().asPath
}
//    from(configurations.compileClasspath.get().map { if (it.isDirectory) it else zipTree(it) })
}
tasks.getByName<Test>("test") {
useJUnitPlatform()
}

我现在已经把from(configurations...)行注释掉了,但不管怎样,它都不起作用。

问题是,当我试图构建一个.jar文件并运行它(在终端中(时,我只会得到错误:

no main manifest attribute, in ...jar

我已经为此创建了几十个不同的工件,并尝试了不同的排列方式。我尝试过将META-INF文件夹放在resources或src/main中。我曾尝试将资源的内容、META-INF和清单本身直接添加到项目结构的工件菜单中的jar文件中,但没有成功。

我已经穷途末路了。我做错了什么?

为什么有:

attributes["Main-Class"] = ...

你有没有真正的主课而不是这三个点"?

最新更新