Expected Behavior
Detekt should run under a Java 25 JVM with a JVM target of 17.
Observed Behavior
Execution fails with an error of:
Caused by: java.lang.IllegalArgumentException: 25
at org.jetbrains.kotlin.com.intellij.util.lang.JavaVersion.parse(JavaVersion.java:307)
at org.jetbrains.kotlin.com.intellij.util.lang.JavaVersion.current(JavaVersion.java:176)
at org.jetbrains.kotlin.cli.jvm.modules.JavaVersionUtilsKt.isAtLeastJava9(javaVersionUtils.kt:11)
at org.jetbrains.kotlin.cli.jvm.modules.CoreJrtFileSystem.globalJrtFsCache$lambda$2(CoreJrtFileSystem.kt:83)
at org.jetbrains.kotlin.cli.jvm.modules.CoreJrtFileSystem.globalJrtFsCache$lambda$3(CoreJrtFileSystem.kt:74)
at org.jetbrains.kotlin.com.intellij.util.containers.ConcurrentFactoryMap$2.create(ConcurrentFactoryMap.java:174)
at org.jetbrains.kotlin.com.intellij.util.containers.ConcurrentFactoryMap.get(ConcurrentFactoryMap.java:40)
at org.jetbrains.kotlin.cli.jvm.modules.CoreJrtFileSystem.roots$lambda$0(CoreJrtFileSystem.kt:34)
at org.jetbrains.kotlin.cli.jvm.modules.CoreJrtFileSystem.roots$lambda$1(CoreJrtFileSystem.kt:33)
at org.jetbrains.kotlin.com.intellij.util.containers.ConcurrentFactoryMap$2.create(ConcurrentFactoryMap.java:174)
at org.jetbrains.kotlin.com.intellij.util.containers.ConcurrentFactoryMap.get(ConcurrentFactoryMap.java:40)
at org.jetbrains.kotlin.cli.jvm.modules.CoreJrtFileSystem.findFileByPath(CoreJrtFileSystem.kt:42)
at org.jetbrains.kotlin.cli.jvm.modules.CliJavaModuleFinder.<init>(CliJavaModuleFinder.kt:44)
at org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment.<init>(KotlinCoreEnvironment.kt:243)
at org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment.<init>(KotlinCoreEnvironment.kt)
at org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment$Companion.createForProduction(KotlinCoreEnvironment.kt:468)
at io.github.detekt.parser.KotlinEnvironmentUtilsKt.createKotlinCoreEnvironment(KotlinEnvironmentUtils.kt:61)
at io.gitlab.arturbosch.detekt.core.settings.EnvironmentFacade.environment_delegate$lambda$0(EnvironmentAware.kt:45)
at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74)
at io.gitlab.arturbosch.detekt.core.settings.EnvironmentFacade.getEnvironment(EnvironmentAware.kt:35)
at io.gitlab.arturbosch.detekt.core.ProcessingSettings.getEnvironment(ProcessingSettings.kt)
at io.gitlab.arturbosch.detekt.core.KtTreeCompiler.<init>(KtTreeCompiler.kt:18)
at io.gitlab.arturbosch.detekt.core.tooling.ParsingStrategyKt.inputPathsToKtFiles$lambda$2(ParsingStrategy.kt:24)
at io.gitlab.arturbosch.detekt.core.tooling.Lifecycle$DefaultImpls.analyze$lambda$1(Lifecycle.kt:38)
at io.gitlab.arturbosch.detekt.core.util.PerformanceMonitor.measure(PerformanceMonitor.kt:43)
at io.gitlab.arturbosch.detekt.core.tooling.Lifecycle$DefaultImpls.measure(Lifecycle.kt:34)
at io.gitlab.arturbosch.detekt.core.tooling.Lifecycle$DefaultImpls.analyze(Lifecycle.kt:38)
at io.gitlab.arturbosch.detekt.core.tooling.DefaultLifecycle.analyze(Lifecycle.kt:61)
at io.gitlab.arturbosch.detekt.core.tooling.AnalysisFacade.runAnalysis$lambda$8(AnalysisFacade.kt:48)
at io.gitlab.arturbosch.detekt.core.tooling.ProcessingSpecSettingsBridgeKt.withSettings(ProcessingSpecSettingsBridge.kt:26)
at io.gitlab.arturbosch.detekt.core.tooling.AnalysisFacade.runAnalysis$detekt_core(AnalysisFacade.kt:47)
at io.gitlab.arturbosch.detekt.core.tooling.AnalysisFacade.run(AnalysisFacade.kt:25)
at io.gitlab.arturbosch.detekt.cli.runners.Runner.call(Runner.kt:33)
at io.gitlab.arturbosch.detekt.cli.runners.Runner.execute(Runner.kt:23)
... 125 more
Steps to Reproduce
Define Detekt config via Gradle like so:
detekt {
buildUponDefaultConfig = true
}
tasks.withType<Detekt>().configureEach {
jvmTarget = "17"
reports {
sarif.required = true
}
}
- Install Corretto 25
- Run
./gradlew check
Context
It appears that this is a flaw within the Kotlin compiler that was fixed in v2.1.20. It hardcoded a less-than-25 when parsing a Java version, and 25 > (25 - 1).
#8302 will fix it, but hopefully that's backported to Detekt v1? 🤞
Your Environment
- Version of detekt used: v1.23.8
- Version of Gradle used (if applicable): v9.1.0 + Corretto 25
- Gradle scan link (add
--scan option when running the gradle task): n/a
- Operating System and version: macOS Tahoe
- Link to your project (if it's a public repository):
Expected Behavior
Detekt should run under a Java 25 JVM with a JVM target of 17.
Observed Behavior
Execution fails with an error of:
Steps to Reproduce
Define Detekt config via Gradle like so:
./gradlew checkContext
It appears that this is a flaw within the Kotlin compiler that was fixed in v2.1.20. It hardcoded a less-than-25 when parsing a Java version, and 25 > (25 - 1).
#8302 will fix it, but hopefully that's backported to Detekt v1? 🤞
Your Environment
--scanoption when running the gradle task): n/a