【发布时间】:2019-12-03 20:25:21
【问题描述】:
我已经使用 Spring Boot 和 Kotlin 和 Gradle 创建了 REST 后端系统。 从 IDE 运行时一切正常。 但是当我创建 jar 文件并使用控制台运行它时 java -jar app.jar 我收到此错误:
错误 org.springframework.boot.SpringApplication - 应用程序运行失败 org.springframework.context.ApplicationContextException:无法启动网络服务器;嵌套异常是 org.springframework.context.ApplicationContextException: Unable to start ServletWebServerApplicationContext due to missing ServletWebServerFactory bean。
我尝试了多种解决方案,但我在网上找到的似乎都没有帮助。我是 Spring Boot 的新手,所以我可能缺少一些东西。
我使用 Intellij 和 Spring Initializr 模板。
build.gradle.kts
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
plugins {
id("org.springframework.boot") version "2.1.6.RELEASE"
id("io.spring.dependency-management") version "1.0.7.RELEASE"
id("org.jetbrains.kotlin.plugin.jpa") version "1.3.41"
kotlin("jvm") version "1.3.41"
kotlin("plugin.spring") version "1.3.41"
}
group = "sk.demo"
version = "0.1.1"
java.sourceCompatibility = JavaVersion.VERSION_1_8
val developmentOnly by configurations.creating
configurations {
runtimeClasspath {
extendsFrom(developmentOnly)
}
}
repositories {
mavenCentral()
}
dependencies {
implementation("org.springframework.boot:spring-boot-starter-data-jpa")
implementation("org.springframework.boot:spring-boot-starter-web")
implementation("com.fasterxml.jackson.module:jackson-module-kotlin")
implementation("org.jetbrains.kotlin:kotlin-reflect")
implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8")
developmentOnly("org.springframework.boot:spring-boot-devtools")
runtimeOnly("mysql:mysql-connector-java")
testImplementation("org.springframework.boot:spring-boot-starter-test")
}
tasks.withType<KotlinCompile> {
kotlinOptions {
freeCompilerArgs = listOf("-Xjsr305=strict")
jvmTarget = "1.8"
}
}
DemoBeApplication.kt
package sk.demo.demo
import org.springframework.boot.autoconfigure.SpringBootApplication
import org.springframework.boot.runApplication
@SpringBootApplication
class DemoBeApplication
fun main(args: Array<String>) {
runApplication<DemoBeApplication>(*args)
}
DemoBeApplication.kt 我试过的另一个版本
package sk.demo.demo
import org.springframework.boot.SpringApplication
import org.springframework.boot.autoconfigure.SpringBootApplication
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer
@SpringBootApplication
class DemoBeApplication : SpringBootServletInitializer()
fun main(args: Array<String>) {
SpringApplication.run(DemoBeApplication::class.java, *args)
}
【问题讨论】:
-
您使用哪个命令来创建
app.jar? -
我已经使用项目选项创建了工件,它包含所有模块,它是完整的,tomcat 在列表中。它还包括带有主类信息的manifect。然后我使用选项来构建工件。
标签: spring spring-boot kotlin jar