LighthouseGames / KmLogging

Kotlin multiplatform logging. High performance, composable and simple to use.
Apache License 2.0
84 stars 13 forks source link

Can't run: runtime error «Cannot invoke "java.util.concurrent.atomic.AtomicReference.get()" because the return value of "org.lighthousegames.logging.KmLoggingKt.access$getLoggers$p()" is null» #22

Closed Ae-Mc closed 7 months ago

Ae-Mc commented 10 months ago

gradle.properties

kotlin.code.style=official
kotlin.version=1.9.20
agp.version=7.3.0
compose.version=1.5.10
compose_plugin.version=1.5.11
exposedVersion=0.43.0
h2Version=2.2.222
loggingVersion=1.3.0
napierVersion=2.6.1
serialization.version=1.9.20
kotlin.mpp.import.enableKgpDependencyResolution=false

settings.gradle.kts

pluginManagement {
    repositories {
        google()
        gradlePluginPortal()
        mavenCentral()
        maven("https://maven.pkg.jetbrains.space/public/p/compose/dev")
    }

    plugins {
        kotlin("multiplatform").version(extra["kotlin.version"] as String)
        kotlin("plugin.serialization").version(extra["serialization.version"] as String)
        id("org.jetbrains.compose").version(extra["compose_plugin.version"] as String)
    }
}

rootProject.name = "school_db"

build.gradle.kts

import org.jetbrains.compose.desktop.application.dsl.TargetFormat

group = "ru.ae_mc"
version = "1.0-SNAPSHOT"
val exposedVersion: String by project
val h2Version: String by project
val napierVersion: String by project
val loggingVersion: String by project

plugins {
    kotlin("multiplatform") version "1.5.30"
    id("org.jetbrains.compose") version "1.5.11"
    kotlin("plugin.serialization")
    id("io.kotest.multiplatform") version "5.0.2"
}

repositories {
    google()
    mavenCentral()
    maven("https://maven.pkg.jetbrains.space/public/p/compose/dev")
}

kotlin {
    jvm {
        jvmToolchain(17)
        withJava()
    }
    sourceSets {
        val commonMain by getting {
            dependencies {
                api("org.lighthousegames:logging:$loggingVersion")
                implementation("androidx.compose.material3:material3:1.1.2")
                implementation("com.darkrockstudios:mpfilepicker:2.1.0")
                implementation("com.fasterxml.jackson.module:jackson-module-kotlin:2.16.+")
                implementation("com.fasterxml.jackson.dataformat:jackson-dataformat-xml:2.16.+")
                implementation("com.itextpdf:itext7-core:8.0.2")
                implementation("io.github.aakira:napier:$napierVersion")
                implementation("io.github.pdvrieze.xmlutil:core:0.86.2")
                implementation("io.github.pdvrieze.xmlutil:serialization:0.86.2")
                implementation("org.jetbrains.exposed:exposed-core:$exposedVersion")
                implementation("org.jetbrains.exposed:exposed-dao:$exposedVersion")
                implementation("org.jetbrains.exposed:exposed-java-time:$exposedVersion")
                implementation("org.jetbrains.exposed:exposed-jdbc:$exposedVersion")
                implementation("org.mariadb.jdbc:mariadb-java-client:3.2.0")
                implementation("org.slf4j:slf4j-api:2.0.9")
                implementation("org.slf4j:slf4j-simple:2.0.9")
            }
        }
        val jvmMain by getting {
            dependencies {
                implementation(compose.desktop.currentOs)
                // implementation("com.h2database:h2:$h2Version")
            }
        }
        val jvmTest by getting {
            dependencies {
                implementation("io.kotest:kotest-framework-engine:5.8.0")
                implementation("io.kotest:kotest-assertions-core:5.8.0")
            }
        }
    }
}

compose.desktop {
    application {
        mainClass = "MainKt"
        nativeDistributions {
            targetFormats(TargetFormat.Dmg, TargetFormat.Msi, TargetFormat.Deb)
            packageName = "school_db"
            packageVersion = "1.0.0"
        }
    }
}

Error message:

Exception in thread "AWT-EventQueue-0" java.lang.RuntimeException: Exception while trying to handle coroutine exception
    at kotlinx.coroutines.CoroutineExceptionHandlerKt.handlerException(CoroutineExceptionHandler.kt:37)
    at kotlinx.coroutines.internal.CoroutineExceptionHandlerImpl_commonKt.handleUncaughtCoroutineException(CoroutineExceptionHandlerImpl.common.kt:42)
    at kotlinx.coroutines.CoroutineExceptionHandlerKt.handleCoroutineException(CoroutineExceptionHandler.kt:28)
    at kotlinx.coroutines.StandaloneCoroutine.handleJobException(Builders.common.kt:194)
    at kotlinx.coroutines.JobSupport.finalizeFinishingState(JobSupport.kt:231)
    at kotlinx.coroutines.JobSupport.tryMakeCompletingSlowPath(JobSupport.kt:910)
    at kotlinx.coroutines.JobSupport.tryMakeCompleting(JobSupport.kt:867)
    at kotlinx.coroutines.JobSupport.makeCompletingOnce$kotlinx_coroutines_core(JobSupport.kt:832)
    at kotlinx.coroutines.AbstractCoroutine.resumeWith(AbstractCoroutine.kt:100)
    at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46)
    at kotlinx.coroutines.UndispatchedCoroutine.afterResume(CoroutineContext.kt:270)
    at kotlinx.coroutines.AbstractCoroutine.resumeWith(AbstractCoroutine.kt:102)
    at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46)
    at kotlinx.coroutines.internal.ScopeCoroutine.afterResume(Scopes.kt:32)
    at kotlinx.coroutines.AbstractCoroutine.resumeWith(AbstractCoroutine.kt:102)
    at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46)
    at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
    at androidx.compose.ui.platform.FlushCoroutineDispatcher$dispatch$2$1.invoke(FlushCoroutineDispatcher.skiko.kt:62)
    at androidx.compose.ui.platform.FlushCoroutineDispatcher$dispatch$2$1.invoke(FlushCoroutineDispatcher.skiko.kt:57)
    at androidx.compose.ui.platform.FlushCoroutineDispatcher.performRun(FlushCoroutineDispatcher.skiko.kt:91)
    at androidx.compose.ui.platform.FlushCoroutineDispatcher.access$performRun(FlushCoroutineDispatcher.skiko.kt:37)
    at androidx.compose.ui.platform.FlushCoroutineDispatcher$dispatch$2.invokeSuspend(FlushCoroutineDispatcher.skiko.kt:57)
    at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
    at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:108)
    at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:318)
    at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:792)
    at java.desktop/java.awt.EventQueue$3.run(EventQueue.java:739)
    at java.desktop/java.awt.EventQueue$3.run(EventQueue.java:733)
    at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
    at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
    at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:761)
    at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:207)
    at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)
    at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117)
    at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)
    at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)
    at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:92)
    Suppressed: java.lang.ExceptionInInitializerError
        at org.lighthousegames.logging.PlatformLogger.<init>(PlatformLogger.kt:6)
        at org.lighthousegames.logging.KmLoggingKt.<clinit>(KmLogging.kt:11)
        at org.lighthousegames.logging.KmLogKt.logging(KmLog.kt:126)
        at Logger.<clinit>(Logger.kt:5)
        at pages.AddTeacherPageKt.AddTeacherPage(AddTeacherPage.kt:30)
        at pages.TeachersPageKt.TeachersPage(TeachersPage.kt:63)
        at pages.TeachersPageKt$TeachersPage$4.invoke(TeachersPage.kt)
        at pages.TeachersPageKt$TeachersPage$4.invoke(TeachersPage.kt)
        at androidx.compose.runtime.RecomposeScopeImpl.compose(RecomposeScopeImpl.kt:169)
        at androidx.compose.runtime.ComposerImpl.recomposeToGroupEnd(Composer.kt:2469)
        at androidx.compose.runtime.ComposerImpl.skipCurrentGroup(Composer.kt:2738)
        at androidx.compose.runtime.ComposerImpl.doCompose(Composer.kt:3353)
        at androidx.compose.runtime.ComposerImpl.recompose$runtime(Composer.kt:3304)
        at androidx.compose.runtime.CompositionImpl.recompose(Composition.kt:781)
        at androidx.compose.runtime.Recomposer.performRecompose(Recomposer.kt:1097)
        at androidx.compose.runtime.Recomposer.access$performRecompose(Recomposer.kt:124)
        at androidx.compose.runtime.Recomposer$runRecomposeAndApplyChanges$2$1.invoke(Recomposer.kt:569)
        at androidx.compose.runtime.Recomposer$runRecomposeAndApplyChanges$2$1.invoke(Recomposer.kt:537)
        at androidx.compose.runtime.BroadcastFrameClock$FrameAwaiter.resume(BroadcastFrameClock.kt:42)
        at androidx.compose.runtime.BroadcastFrameClock.sendFrame(BroadcastFrameClock.kt:71)
        at androidx.compose.ui.ComposeScene.render(ComposeScene.skiko.kt:543)
        at androidx.compose.ui.awt.ComposeBridge$skikoView$1$onRender$1.invoke(ComposeBridge.desktop.kt:178)
        at androidx.compose.ui.awt.ComposeBridge$skikoView$1$onRender$1.invoke(ComposeBridge.desktop.kt:177)
        at androidx.compose.ui.awt.ComposeBridge.catchExceptions(ComposeBridge.desktop.kt:150)
        at androidx.compose.ui.awt.ComposeBridge.access$catchExceptions(ComposeBridge.desktop.kt:64)
        at androidx.compose.ui.awt.ComposeBridge$skikoView$1.onRender(ComposeBridge.desktop.kt:177)
        at org.jetbrains.skiko.SkiaLayer.update$skiko(SkiaLayer.awt.kt:548)
        at org.jetbrains.skiko.redrawer.AWTRedrawer.update(AWTRedrawer.kt:54)
        at org.jetbrains.skiko.redrawer.Direct3DRedrawer$frameDispatcher$1.invokeSuspend(Direct3DRedrawer.kt:49)
        at org.jetbrains.skiko.redrawer.Direct3DRedrawer$frameDispatcher$1.invoke(Direct3DRedrawer.kt)
        at org.jetbrains.skiko.redrawer.Direct3DRedrawer$frameDispatcher$1.invoke(Direct3DRedrawer.kt)
        at org.jetbrains.skiko.FrameDispatcher$job$1.invokeSuspend(FrameDispatcher.kt:33)
        ... 15 more
    Caused by: java.lang.NullPointerException: Cannot invoke "java.util.concurrent.atomic.AtomicReference.get()" because the return value of "org.lighthousegames.logging.KmLoggingKt.access$getLoggers$p()" is null
        at org.lighthousegames.logging.KmLogging.setupLoggingFlags(KmLogging.kt:82)
        at org.lighthousegames.logging.KmLogging.<clinit>(KmLogging.kt:22)
        ... 47 more
Caused by: java.lang.NoClassDefFoundError: android/os/Build$VERSION
    at kotlinx.coroutines.android.AndroidExceptionPreHandler.handleException(AndroidExceptionPreHandler.kt:47)
    at kotlinx.coroutines.internal.CoroutineExceptionHandlerImpl_commonKt.handleUncaughtCoroutineException(CoroutineExceptionHandlerImpl.common.kt:38)
    ... 35 more
Caused by: java.lang.ClassNotFoundException: android.os.Build$VERSION
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525)
    ... 37 more
Exception in thread "AWT-EventQueue-0" java.lang.ExceptionInInitializerError
    at org.lighthousegames.logging.PlatformLogger.<init>(PlatformLogger.kt:6)
    at org.lighthousegames.logging.KmLoggingKt.<clinit>(KmLogging.kt:11)
    at org.lighthousegames.logging.KmLogKt.logging(KmLog.kt:126)
    at Logger.<clinit>(Logger.kt:5)
    at pages.AddTeacherPageKt.AddTeacherPage(AddTeacherPage.kt:30)
    at pages.TeachersPageKt.TeachersPage(TeachersPage.kt:63)
    at pages.TeachersPageKt$TeachersPage$4.invoke(TeachersPage.kt)
    at pages.TeachersPageKt$TeachersPage$4.invoke(TeachersPage.kt)
    at androidx.compose.runtime.RecomposeScopeImpl.compose(RecomposeScopeImpl.kt:169)
    at androidx.compose.runtime.ComposerImpl.recomposeToGroupEnd(Composer.kt:2469)
    at androidx.compose.runtime.ComposerImpl.skipCurrentGroup(Composer.kt:2738)
    at androidx.compose.runtime.ComposerImpl.doCompose(Composer.kt:3353)
    at androidx.compose.runtime.ComposerImpl.recompose$runtime(Composer.kt:3304)
    at androidx.compose.runtime.CompositionImpl.recompose(Composition.kt:781)
    at androidx.compose.runtime.Recomposer.performRecompose(Recomposer.kt:1097)
    at androidx.compose.runtime.Recomposer.access$performRecompose(Recomposer.kt:124)
    at androidx.compose.runtime.Recomposer$runRecomposeAndApplyChanges$2$1.invoke(Recomposer.kt:569)
    at androidx.compose.runtime.Recomposer$runRecomposeAndApplyChanges$2$1.invoke(Recomposer.kt:537)
    at androidx.compose.runtime.BroadcastFrameClock$FrameAwaiter.resume(BroadcastFrameClock.kt:42)
    at androidx.compose.runtime.BroadcastFrameClock.sendFrame(BroadcastFrameClock.kt:71)
    at androidx.compose.ui.ComposeScene.render(ComposeScene.skiko.kt:543)
    at androidx.compose.ui.awt.ComposeBridge$skikoView$1$onRender$1.invoke(ComposeBridge.desktop.kt:178)
    at androidx.compose.ui.awt.ComposeBridge$skikoView$1$onRender$1.invoke(ComposeBridge.desktop.kt:177)
    at androidx.compose.ui.awt.ComposeBridge.catchExceptions(ComposeBridge.desktop.kt:150)
    at androidx.compose.ui.awt.ComposeBridge.access$catchExceptions(ComposeBridge.desktop.kt:64)
    at androidx.compose.ui.awt.ComposeBridge$skikoView$1.onRender(ComposeBridge.desktop.kt:177)
    at org.jetbrains.skiko.SkiaLayer.update$skiko(SkiaLayer.awt.kt:548)
    at org.jetbrains.skiko.redrawer.AWTRedrawer.update(AWTRedrawer.kt:54)
    at org.jetbrains.skiko.redrawer.Direct3DRedrawer$frameDispatcher$1.invokeSuspend(Direct3DRedrawer.kt:49)
    at org.jetbrains.skiko.redrawer.Direct3DRedrawer$frameDispatcher$1.invoke(Direct3DRedrawer.kt)
    at org.jetbrains.skiko.redrawer.Direct3DRedrawer$frameDispatcher$1.invoke(Direct3DRedrawer.kt)
    at org.jetbrains.skiko.FrameDispatcher$job$1.invokeSuspend(FrameDispatcher.kt:33)
    at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
    at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:108)
    at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:318)
    at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:792)
    at java.desktop/java.awt.EventQueue$3.run(EventQueue.java:739)
    at java.desktop/java.awt.EventQueue$3.run(EventQueue.java:733)
    at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
    at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
    at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:761)
    at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:207)
    at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)
    at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117)
    at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)
    at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)
    at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:92)
    Suppressed: kotlinx.coroutines.internal.DiagnosticCoroutineContextException: [androidx.compose.ui.awt.ComposeBridge$coroutineExceptionHandler$1@1ae2b858, androidx.compose.runtime.BroadcastFrameClock@4bacaf08, StandaloneCoroutine{Cancelling}@5ec9543, FlushCoroutineDispatcher@116a994]
Caused by: java.lang.NullPointerException: Cannot invoke "java.util.concurrent.atomic.AtomicReference.get()" because the return value of "org.lighthousegames.logging.KmLoggingKt.access$getLoggers$p()" is null
    at org.lighthousegames.logging.KmLogging.setupLoggingFlags(KmLogging.kt:82)
    at org.lighthousegames.logging.KmLogging.<clinit>(KmLogging.kt:22)
    ... 47 more
ellsworthrw commented 7 months ago

This seems very similar to issue #19 which I can no longer reproduce in version 1.4.1. Please try this in version 1.4.1. If you still see this please open another issue with steps to reproduce.