Configuration requires entries under the prefix: datasources.default

48 views Asked by At

When I assemble the jar and execute it have the following error:

java -Dmicronaut.server.port=17672 -jar dictionary-be-0.1.jar

    Message: No bean of type [java.sql.Connection] exists. 
    * [Connection] requires the presence of a bean of type [javax.sql.DataSource].
     * [DataSource] requires the presence of a bean of type [io.micronaut.configuration.jdbc.hikari.DatasourceConfiguration].
      * [DatasourceConfiguration] is disabled because:
       - Configuration requires entries under the prefix: [datasources.default]
    Path Taken: new SecurityFilter(Collection securityRules,Collection authenticationFetchers,SecurityConfiguration securityConfiguration) --> new SecurityFilter(Collection securityRules,[Collection authenticationFetchers],SecurityConfiguration securityConfiguration) --> new BasicAuthAuthenticationFetcher([Authenticator authenticator]) --> new Authenticator(BeanContext beanContext,List reactiveAuthenticationProviders,[List authenticationProviders],List deprecatedAuthenticationProviders,SecurityConfiguration securityConfiguration) --> new AuthenticationProviderUserPassword([UserService userService]) --> new UserService([Connection connection],TransactionOperations transactionManager)
        at io.micronaut.context.AbstractInitializableBeanDefinition.resolveBean(AbstractInitializableBeanDefinition.java:2181)
        at io.micronaut.context.AbstractInitializableBeanDefinition.getBeanForConstructorArgument(AbstractInitializableBeanDefinition.java:1328)
        at com.dictionary.service.$UserService$Definition.instantiate(Unknown Source)
        at io.micronaut.context.DefaultBeanContext.resolveByBeanFactory(DefaultBeanContext.java:2330)

The error is weird as application.yaml and properties contain these parameters:

datasources.default.url=jdbc:postgresql://localhost:5432/postgres
#datasources.default.url=${JDBC_DATABASE_URL}
datasources.default.username=
datasources.default.password=
datasources.default.db-type=postgres
datasources.default.driver-class-name=org.postgresql.Driver
datasources.default.dialect=POSTGRES
datasources:
  default:
    driverClassName: org.postgresql.Driver
    password: ""
    url: jdbc:postgresql://localhost:5432/postgres
    username: ""

Switching between files did not help. If I run locally, I can find the message that HikariPool-1 - Starting... however with jar it does not occur.

I have a feeling that the Gradle file is not correct, but I have no clue what exactly. Sorry for the impressive configuration, I was trying different options.

plugins {
    java
    application
    id("org.jetbrains.kotlin.jvm") version "1.9.22"
    id("com.google.devtools.ksp") version "1.9.22-1.0.17"
    id("io.micronaut.application") version "4.3.2"
    id("io.micronaut.test-resources") version "4.3.2"
}

version = "0.1"
group = "com.dictionary"

val kotlinVersion = project.properties.get("kotlinVersion")

repositories {
    mavenCentral()
}

dependencies {
    ksp("io.micronaut.data:micronaut-data-processor")
    ksp("io.micronaut:micronaut-http-validation")
    ksp("io.micronaut.serde:micronaut-serde-processor")
    ksp("io.micronaut.security:micronaut-security-annotations")

    annotationProcessor("io.micronaut.validation:micronaut-validation-processor")
    implementation("io.micronaut.validation:micronaut-validation")

    implementation("io.micronaut.data:micronaut-data-jdbc")
    compileOnly("io.micronaut.data:micronaut-data-jdbc")
    runtimeOnly("io.micronaut.data:micronaut-data-jdbc")

    implementation("io.micronaut.kotlin:micronaut-kotlin-runtime")
    implementation("io.micronaut.reactor:micronaut-reactor-http-client")
    annotationProcessor("io.micronaut.data:micronaut-data-processor:1.0.2")
    implementation("io.micronaut.serde:micronaut-serde-jackson")

    runtimeOnly("io.micronaut.sql:micronaut-jdbc-hikari")
    compileOnly("io.micronaut.sql:micronaut-jdbc-hikari")
    implementation("io.micronaut.sql:micronaut-jdbc-hikari")

    implementation("io.micronaut.security:micronaut-security-jwt")
    annotationProcessor("io.micronaut.data:micronaut-data-processor")
    implementation("io.micronaut.data:micronaut-data-tx-hibernate")
    implementation("org.jetbrains.kotlin:kotlin-reflect:${kotlinVersion}")

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

    compileOnly("io.micronaut:micronaut-http-client")
    runtimeOnly("ch.qos.logback:logback-classic")
    implementation("io.micronaut.data:micronaut-data-hibernate-reactive")
    implementation("org.slf4j:slf4j-api:2.0.12")
    runtimeOnly("com.fasterxml.jackson.module:jackson-module-kotlin")
    runtimeOnly("org.postgresql:postgresql")
    runtimeOnly("org.yaml:snakeyaml")
    testImplementation("io.micronaut:micronaut-http-client")
    implementation("com.amazonaws:aws-java-sdk:1.12.671")
}

application {
    mainClass.set("com.dictionary.ApplicationKt")
}

java {
    sourceCompatibility = JavaVersion.toVersion("17")
    targetCompatibility = JavaVersion.toVersion("17")
}

tasks.withType<Jar> {
    manifest {
        attributes["Main-Class"] = "com.dictionary.ApplicationKt"
    }

    isZip64 = true

    // To avoid the duplicate handling strategy error
    duplicatesStrategy = DuplicatesStrategy.EXCLUDE

    // To add all of the dependencies otherwise a "NoClassDefFoundError" error
    from(sourceSets.main.get().output)

    from({
        isZip64 = true
        configurations.runtimeClasspath.get().filter { it.name.endsWith("jar") }.map { zipTree(it) }
    })

}


tasks {

    val stage by registering {
        dependsOn(build, clean)
    }
    build {
        mustRunAfter(clean)
    }

    distTar {
        enabled = false
    }

    distZip {
        enabled = false
    }

    dockerBuild {
        enabled = false
    }

    dockerBuildNative {
        enabled = false
    }

    dockerfile {
        enabled = false
    }

    dockerfileNative {
        enabled = false
    }

    buildLayers {
        enabled = false
    }

    runnerJar {
        enabled = false
    }

    nativeBuild {
        enabled = false
    }

    nativeCompileClasspathJar {
        enabled = false
    }

}

graalvmNative.toolchainDetection.set(false)

micronaut {
    runtime("netty")
    testRuntime("junit5")
    processing {
        incremental(true)
        annotations("com.dictionary.*")
    }
    testResources {
        additionalModules.add("jdbc-postgresql")
    }
}
0

There are 0 answers