With Detekt 1.23.0 I'm now getting `java.lang.NoCl...
# detekt
s
With Detekt 1.23.0 I'm now getting
java.lang.NoClassDefFoundError: Could not initialize class io.github.detekt.test.utils.KtTestCompiler
in test for my own Detekt rules. Do I now need to add more than the
detekt-test
artifact to
testImplementation
?
I also just tried adding an explicit dependency on
detekt-test-utils
, but that does not make a difference.
Looks like the root cause is
Exception java.util.ServiceConfigurationError: java.nio.file.spi.FileSystemProvider: Provider org.apache.sshd.sftp.client.fs.SftpFileSystemProvider could not be instantiated
. No idea where that comes from, though.
It's probably because I have
org.eclipse.jgit.ssh.apache.agent
in my classpath...
Here's the stacktrace:
Copy code
java.util.ServiceConfigurationError: java.nio.file.spi.FileSystemProvider: Provider org.apache.sshd.sftp.client.fs.SftpFileSystemProvider could not be instantiated
	at java.base/java.util.ServiceLoader.fail(ServiceLoader.java:586)
	at java.base/java.util.ServiceLoader$ProviderImpl.newInstance(ServiceLoader.java:813)
	at java.base/java.util.ServiceLoader$ProviderImpl.get(ServiceLoader.java:729)
	at java.base/java.util.ServiceLoader$3.next(ServiceLoader.java:1403)
	at java.base/java.nio.file.spi.FileSystemProvider.loadInstalledProviders(FileSystemProvider.java:156)
	at java.base/java.nio.file.spi.FileSystemProvider$1.run(FileSystemProvider.java:207)
	at java.base/java.nio.file.spi.FileSystemProvider$1.run(FileSystemProvider.java:204)
	at java.base/java.security.AccessController.doPrivileged(AccessController.java:318)
	at java.base/java.nio.file.spi.FileSystemProvider.installedProviders(FileSystemProvider.java:204)
	at java.base/java.nio.file.FileSystems.newFileSystem(FileSystems.java:526)
	at java.base/java.nio.file.FileSystems.newFileSystem(FileSystems.java:400)
	at org.jetbrains.kotlin.com.intellij.ide.plugins.DescriptorLoadingContext.open(DescriptorLoadingContext.java:40)
	at org.jetbrains.kotlin.com.intellij.ide.plugins.PluginDescriptorLoader.loadDescriptorFromJar(PluginDescriptorLoader.java:84)
	at org.jetbrains.kotlin.com.intellij.ide.plugins.PluginManagerCore.registerExtensionPointAndExtensions(PluginManagerCore.java:1325)
	at org.jetbrains.kotlin.com.intellij.core.CoreApplicationEnvironment.registerExtensionPointAndExtensions(CoreApplicationEnvironment.java:287)
	at org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment$Companion.registerApplicationExtensionPointsAndExtensionsFrom(KotlinCoreEnvironment.kt:625)
	at org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment$Companion.createApplicationEnvironment(KotlinCoreEnvironment.kt:595)
	at org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment$Companion.getOrCreateApplicationEnvironment(KotlinCoreEnvironment.kt:505)
	at org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment$Companion.getOrCreateApplicationEnvironmentForProduction(KotlinCoreEnvironment.kt:492)
	at org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment$Companion.createForProduction(KotlinCoreEnvironment.kt:440)
	at io.github.detekt.parser.KotlinEnvironmentUtilsKt.createKotlinCoreEnvironment(KotlinEnvironmentUtils.kt:62)
	at io.github.detekt.parser.KotlinEnvironmentUtilsKt.createKotlinCoreEnvironment$default(KotlinEnvironmentUtils.kt:49)
	at io.github.detekt.parser.KtCompiler.<init>(KtCompiler.kt:16)
	at io.github.detekt.test.utils.KtTestCompiler.<init>(KtTestCompiler.kt:27)
	at io.github.detekt.test.utils.KtTestCompiler.<clinit>(KtTestCompiler.kt)
	at io.github.detekt.test.utils.CompileExtensionsKt.compileContentForTest(CompileExtensions.kt:14)
	at io.github.detekt.test.utils.CompileExtensionsKt.compileContentForTest$default(CompileExtensions.kt:10)
	at io.gitlab.arturbosch.detekt.test.RuleExtensionsKt.lint(RuleExtensions.kt:28)
Digging yet further, the problem somehow seems to be related to SLF4J:
Copy code
Caused by: java.lang.NoSuchMethodError: 'void org.slf4j.Logger.error(java.lang.String, java.lang.Object[])'
	at org.apache.sshd.common.util.security.SecurityUtils.registerSecurityProvider(SecurityUtils.java:489)
	at org.apache.sshd.common.util.security.SecurityUtils.register(SecurityUtils.java:446)
	at org.apache.sshd.common.util.security.SecurityUtils.createSecurityEntityFactory(SecurityUtils.java:717)
	at org.apache.sshd.common.util.security.SecurityUtils.lambda$resolveSecurityEntityFactory$1(SecurityUtils.java:709)