我想为我的spring Boot 项目构建一个可执行的jar文件,我尝试了几个选项,没有一个有效。我总是得到java找不到main
类的结果。我试图创建一个工件并构建它,我得到了
没有主清单属性,在. jar中
如果我从gradle tasks(jar)创建jar,并从libs文件夹运行jar,我会得到这个错误
错误:找不到或加载主类com.thyme.business_data.BusinessDataApplicationKt原因:java.lang.ClassNotFoundException:com.thyme.business_data.BusinessDataApplicationKt
我在gradle中添加了所需的设置,但这并没有改变任何东西我的设置有什么问题?这是我的gradle
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
plugins {
application
id("org.springframework.boot") version "3.2.0"
id("io.spring.dependency-management") version "1.1.4"
kotlin("jvm") version "1.9.20"
kotlin("plugin.spring") version "1.9.20"
}
group = "com.thyme"
version = "1.0.0"
java {
sourceCompatibility = JavaVersion.VERSION_17
}
repositories {
mavenCentral()
maven { url = uri("https://repo.spring.io/milestone") }
}
extra["springCloudVersion"] = "2023.0.0-RC1"
dependencies {
implementation("org.springframework.boot:spring-boot-starter-data-couchbase-reactive")
implementation("org.springframework.boot:spring-boot-starter-rsocket")
implementation("io.projectreactor.kotlin:reactor-kotlin-extensions")
implementation("org.jetbrains.kotlin:kotlin-reflect")
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-reactor")
implementation("org.springframework.cloud:spring-cloud-starter")
implementation("com.fasterxml.jackson.core:jackson-databind")
testImplementation("com.fasterxml.jackson.core:jackson-databind")
testImplementation("org.springframework.boot:spring-boot-starter-test")
testImplementation("io.projectreactor:reactor-test")
}
dependencyManagement {
imports {
mavenBom("org.springframework.cloud:spring-cloud-dependencies:${property("springCloudVersion")}")
}
}
tasks.withType<KotlinCompile> {
kotlinOptions {
freeCompilerArgs += "-Xjsr305=strict"
jvmTarget = "17"
}
}
tasks.withType<Test> {
useJUnitPlatform()
}
application {
mainClass = "com.thyme.business_data.BusinessDataApplicationKt"
}
tasks.withType<Jar> {
// Otherwise you'll get a "No main manifest attribute" error
manifest {
attributes["Main-Class"] = application.mainClass
}
// To avoid the duplicate handling strategy error
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
// To add all the dependencies
from(sourceSets.main.get().output)
dependsOn(configurations.runtimeClasspath)
from({
configurations.runtimeClasspath.get().filter { it.name.endsWith("jar") }.map { zipTree(it) }
})
}
字符串
1条答案
按热度按时间mkshixfv1#
我用这种方法解决了这个问题,但我必须先删除所有的
MANIFEST.MF
文件。清理项目,然后从gradle运行BootJar。完成!字符串