Add kotlin module: null safety, coroutines, allopen/noarg, JSpecify interop (post #42)

This commit is contained in:
Claude
2026-10-08 05:35:15 +00:00
parent 83d245e726
commit f736108067
21 changed files with 659 additions and 1 deletions
@@ -0,0 +1,24 @@
Real, captured output: removing the "spring" compilerPlugin entry from pom.xml's
kotlin-maven-plugin configuration (keeping only "jpa"), then running:
mvn -q -B clean package -DskipTests && java -jar target/kotlin-demo.jar
Failure #1 -- BookService's @Transactional needs a CGLIB subclass proxy, but
BookService is a final Kotlin class (and Application, as a @Configuration class,
has the same problem even before any bean method runs):
org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Configuration problem: @Configuration class 'Application' may not be final. Remove the final modifier to continue.
Offending resource: com.ankurm.kotlin.Application
Failure #2 -- after manually adding `open` to just the Application class to get
past failure #1 (sed -i 's/^class Application {/open class Application {/' on
Application.kt), rebuilding and rerunning hits the next thing the "spring"
plugin would otherwise have handled automatically: the @Bean method itself.
org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Configuration problem: @Bean method 'seed' must not be private or final; change the method's modifiers to continue.
Offending resource: com.ankurm.kotlin.Application
Restoring the "spring" compilerPlugin entry (alongside "jpa") and reverting
Application back to a plain, non-open `class Application` -- i.e. the
checked-in state of this repository -- builds and starts cleanly. See
02-fixed-startup.txt for that run.