当前位置: 首页 > 知识库问答 >
问题:

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

符渊
2023-03-14

我刚开始使用Micronaut,但无法获得一个简单的endpoint来工作。我得到http://localhost:8901/game_compositions/的响应

{
"message": "Page Not Found",
"_links": {
    "self": {
        "href": "/game_compositions/",
        "templated": false
    }
}
}

我在这里看到了一些关于同样的回答的其他问题,但没有一个对我有帮助。我已经为我的构建激活了注释处理器,并且我不返回NULL。

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

这是我的项目:

控制器:

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")
    }
}

build.gradle(大部分是从https://micronaut.io/launch/site自动生成的,所以对于一个简单的服务来说可能有一些不必要的东西。请随意指出)

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

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

val kotlinVersion=project.properties.get("kotlinVersion")
repositories {
    mavenCentral()
    jcenter()
}

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

dependencies {
    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")

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

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

    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("14")
}

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

application.yml(数据库连接到目前为止尚未使用,未经测试)

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

数据源:默认值:URL:jdbc:mysql://localhost:3306/db用户名:root密码:root driver-class-name:org.mariadb.jdbc.driver

JPA:default:properties:hibernate:hbm2ddl:auto:none show_sql:true

共有1个答案

杜楚
2023-03-14

感谢Jeff Scott Brown的评论,我已经能够确定插件的顺序是问题所在。我不知道在格雷德尔的顺序是重要的。显然Micronaut需要首先添加kapt插件。任何对此有更多洞察力的人都欢迎发表一个更好的答案,对我来说,它工作改变了我的分级文件的开始如下:

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"
}

编辑:一个重要的注意,如果任何人试图使用我的分级文件。结果kapt不支持Java 14,这给我造成了一些很难找到的麻烦。这是我目前的工作级文件:

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"
        }
    }
}
 类似资料:
  • 我们收到很多404页面未找到的错误,我们找不到相同模式的原因。我们没有对此404页面进行任何重定向,或者我们没有在任何地方为这个损坏的页面链接提供链接。 这种错误的共同点部分以相同的模式进行处理;删除网址的第一段。示例; 这是真正的URL; site.com/category/news/title-of-the-content 网站.com/another-category/news/anothe

  • 我正在尝试将 Android 应用程序的 build.gradle 文件转换为 Kotlin DSL。此文件具有如下函数: 我将其转换为: 我得到一个错误,并应用将其更改为显示一个错误。 我做错了什么吗?提前感谢。

  • 我在弹出窗口有联系表,但当我点击发送按钮时,我没有找到页面,而不是将我重定向到主页。 这是我的路线 HomeC中的功能ontroller.php 表单打开和关闭标签是 当我点击提交我有 为什么要在应该重新加载主页时尝试加载此URL? 用表格更新 更新2:发送邮件功能

  • 我尝试使用Kotlin脚本将我的一个项目迁移到Gradle。 以下是我的步骤: 用这个替换 将gradle/包装器/gradle-wrapper.properties的更新为与此处相同 创建了相应的 设置到 此时Intellij检测到它并建议: 您可以将Gradle包装器配置为对源使用分发。它将为IDE提供Gradle API/DSL留档。 - gradle'hello-kotlin'项目刷新失败

  • 我使用mn create-app example.micronaut.complete创建了一个新的micronaut应用程序 之后,我使用intellij打开了项目,并将一个新类作为TestController添加到项目中,代码如下: 但我得到了

  • 我已经看了所有其他对此的反应,但它们似乎不适用于我。 https://kotlinlang.org/api/latest/kotlin.test/kotlin.test/ 我正在尝试从暂存文件或.kt文件访问它,并且它不在下拉列表中以选择它。 项目正在使用JDK 15。