Supabase Kotlin: NoClassDefFoundError: InstantSerializer in Spring Boot
Framework: Spring Boot Kotlin Version: 2.2.0 Supabase Version: 3.2.6
Dependencies:
val supabaseVersion = "3.2.6"// Supabaseimplementation(platform("io.github.jan-tennert.supabase:bom:$supabaseVersion"))implementation("io.github.jan-tennert.supabase:supabase-kt")implementation("io.github.jan-tennert.supabase:auth-kt")implementation("io.github.jan-tennert.supabase:storage-kt")// Kotlinx Serializationimplementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.9.0")
val supabaseVersion = "3.2.6"// Supabaseimplementation(platform("io.github.jan-tennert.supabase:bom:$supabaseVersion"))implementation("io.github.jan-tennert.supabase:supabase-kt")implementation("io.github.jan-tennert.supabase:auth-kt")implementation("io.github.jan-tennert.supabase:storage-kt")// Kotlinx Serializationimplementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.9.0")
The Problem
I'm getting a
NoClassDefFoundError
NoClassDefFoundError
when calling my signup endpoint using
supabase.auth.signUpWith()
supabase.auth.signUpWith()
:
Error Stack Trace
java.lang.NoClassDefFoundError: kotlinx/serialization/internal/InstantSerializer at io.github.jan.supabase.auth.user.UserInfo$$serializer.deserialize(UserInfo.kt:9) at io.github.jan.supabase.auth.user.UserInfo$$serializer.deserialize(UserInfo.kt:9) ...Message: "kotlinx/serialization/internal/InstantSerializer"Path: "/api/v1/auth/signup"
java.lang.NoClassDefFoundError: kotlinx/serialization/internal/InstantSerializer at io.github.jan.supabase.auth.user.UserInfo$$serializer.deserialize(UserInfo.kt:9) at io.github.jan.supabase.auth.user.UserInfo$$serializer.deserialize(UserInfo.kt:9) ...Message: "kotlinx/serialization/internal/InstantSerializer"Path: "/api/v1/auth/signup"
Root Cause The Supabase Auth library uses InstantSerializer in the UserSession class:
Questions: What is the correct version of kotlinx-serialization-json needed for Supabase-KT 3.2.6? Is there a version compatibility issue between Kotlin 2.2.0 and Supabase-KT 3.2.6? Do I need to add additional datetime serialization dependencies? Is there a workaround to properly load InstantSerializer onto the classpath?
Supabase gives you the tools, documentation, and community that makes managing databases, authentication, and backend infrastructure a lot less overwhelming.