使用micronaut、Gradle和Kotlin未找到页面消息

使用micronaut、Gradle和Kotlin未找到页面消息,kotlin,micronaut,Kotlin,Micronaut,我刚开始使用Micronaut,但我无法使用一个简单的端点。我在http://localhost:8901/game_compositions/ { "message": "Page Not Found", "_links": { "self": { "href": "/game_compositions/", "templat

我刚开始使用Micronaut,但我无法使用一个简单的端点。我在
http://localhost:8901/game_compositions/

{
"message": "Page Not Found",
"_links": {
    "self": {
        "href": "/game_compositions/",
        "templated": false
    }
}
}
我在这里看到了一些关于相同回答的其他问题,但没有一个对我有帮助。我的身材和身材都很好

我想我犯了一些简单愚蠢的错误,但我找不到。根据样本项目,我似乎拥有了我所需要的一切

这是我的项目:

控制器:

import io.micronaut.http.MediaType
import io.micronaut.http.annotation.Controller
import io.micronaut.http.annotation.Get
import io.micronaut.http.annotation.Produces

@Controller("/game_compositions")
class CompositionsController {

    @Produces(MediaType.APPLICATION_JSON)
    @Get(uri = "/")
    fun getCompositions(): Iterable<String> {
        return listOf("something")
    }
}
Application.yml(数据库连接尚未测试)

micronaut: 应用程序: 名称:后端 服务器: 港口:8901

数据源: 违约: url:jdbc:mysql://localhost:3306/db 用户名:root 密码:root 驱动程序类名:org.mariadb.jdbc.driver

jpa: 违约: 特性: 冬眠: hbm2ddl: 自动:无
show_sql:true

感谢Jeff Scott Brown的评论,我已经能够确定插件的顺序是问题所在。我不知道这个命令在格拉德尔很重要。显然,Micronaut要求首先添加kapt插件。欢迎对此有更多见解的人发布更好的答案,对我来说,将gradle文件的开头改为以下内容很有效:

plugins {
    kotlin("jvm") version "1.4.10"
    kotlin("kapt") version "1.4.10"
    id("io.micronaut.application") version "1.2.0"
    kotlin("plugin.allopen") version "1.4.10"
}
编辑:如果有人试图使用我的gradle文件,这是一个重要提示。事实证明kapt不支持Java14,这给我带来了一些很难找到的麻烦。这是我当前的工作梯度文件:

plugins {
    kotlin("jvm") version "1.4.10"
    kotlin("kapt") version "1.4.10"
    kotlin("plugin.allopen") version "1.4.10"
    kotlin("plugin.jpa") version "1.4.10"
    id("io.micronaut.application") version "1.2.0"
}

version = "0.1"
group = "com.example.backend"

val kotlinVersion: String by project

repositories {
    mavenCentral()
    jcenter()
}

micronaut {
    runtime("netty")
    testRuntime("junit5")
    processing {
        incremental(true)
        annotations("com.example.backend.*")
    }
}

dependencies {
    annotationProcessor("io.micronaut.data:micronaut-data-processor")
    implementation("io.micronaut:micronaut-validation")
    implementation("io.micronaut.kotlin:micronaut-kotlin-runtime")
    implementation("io.micronaut:micronaut-runtime")
    implementation("io.micronaut.sql:micronaut-jdbc-hikari")
    implementation("io.micronaut.sql:micronaut-hibernate-jpa")
    implementation("io.micronaut.data:micronaut-data-hibernate-jpa")

    implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8:${kotlinVersion}")
    implementation("org.jetbrains.kotlin:kotlin-reflect:${kotlinVersion}")

    runtimeOnly("org.mariadb.jdbc:mariadb-java-client")

    runtimeOnly("ch.qos.logback:logback-classic")

    runtimeOnly("com.fasterxml.jackson.module:jackson-module-kotlin")
}


application {
    mainClass.set("com.example.backend.ApplicationKt")
}

java {
    sourceCompatibility = JavaVersion.toVersion("11")
}

tasks {
    compileKotlin {
        kotlinOptions {
            jvmTarget = "11"
        }
    }
    compileTestKotlin {
        kotlinOptions {
            jvmTarget = "11"
        }
    }
}

请参阅上的项目。似乎有效。您是否可以向该项目发送PR来演示问题,或者共享一些代码来帮助解决问题?如果它看起来像一个bug,请在报告,我们可以进行调查。@JeffScottBrown非常感谢,这个例子让我可以一步一步地比较,结果证明插件的顺序是问题所在。我不知道这在格拉德尔很重要。如果你写一个答案,我会接受,因为这是基于你的评论:)我很高兴你找到了答案。做得好!
plugins {
    kotlin("jvm") version "1.4.10"
    kotlin("kapt") version "1.4.10"
    kotlin("plugin.allopen") version "1.4.10"
    kotlin("plugin.jpa") version "1.4.10"
    id("io.micronaut.application") version "1.2.0"
}

version = "0.1"
group = "com.example.backend"

val kotlinVersion: String by project

repositories {
    mavenCentral()
    jcenter()
}

micronaut {
    runtime("netty")
    testRuntime("junit5")
    processing {
        incremental(true)
        annotations("com.example.backend.*")
    }
}

dependencies {
    annotationProcessor("io.micronaut.data:micronaut-data-processor")
    implementation("io.micronaut:micronaut-validation")
    implementation("io.micronaut.kotlin:micronaut-kotlin-runtime")
    implementation("io.micronaut:micronaut-runtime")
    implementation("io.micronaut.sql:micronaut-jdbc-hikari")
    implementation("io.micronaut.sql:micronaut-hibernate-jpa")
    implementation("io.micronaut.data:micronaut-data-hibernate-jpa")

    implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8:${kotlinVersion}")
    implementation("org.jetbrains.kotlin:kotlin-reflect:${kotlinVersion}")

    runtimeOnly("org.mariadb.jdbc:mariadb-java-client")

    runtimeOnly("ch.qos.logback:logback-classic")

    runtimeOnly("com.fasterxml.jackson.module:jackson-module-kotlin")
}


application {
    mainClass.set("com.example.backend.ApplicationKt")
}

java {
    sourceCompatibility = JavaVersion.toVersion("11")
}

tasks {
    compileKotlin {
        kotlinOptions {
            jvmTarget = "11"
        }
    }
    compileTestKotlin {
        kotlinOptions {
            jvmTarget = "11"
        }
    }
}