kotlin-language-server icon indicating copy to clipboard operation
kotlin-language-server copied to clipboard

Kotlin Language Server fails to install on first use

Open jzebedee opened this issue 3 years ago • 5 comments

Description

After installing the extension and clicking the toast for first-time setup, the KLS downloads but fails to install and start.

Extension version

v0.2.22

Additional context

VS Code 1.55.2 on Windows 10 x64

> javac --version
javac 16
> java --version
openjdk 16 2021-03-16
OpenJDK Runtime Environment AdoptOpenJDK (build 16+36)
OpenJDK 64-Bit Server VM AdoptOpenJDK (build 16+36, mixed mode, sharing)
Exception in thread "main" java.lang.ExceptionInInitializerError
	at com.intellij.pom.java.LanguageLevel.<clinit>(LanguageLevel.java:25)
	at com.intellij.core.CoreLanguageLevelProjectExtension.<init>(CoreLanguageLevelProjectExtension.java:26)
	at com.intellij.core.JavaCoreProjectEnvironment.<init>(JavaCoreProjectEnvironment.java:42)
	at org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreProjectEnvironment.<init>(KotlinCoreProjectEnvironment.kt:26)
	at org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment$ProjectEnvironment.<init>(KotlinCoreEnvironment.kt:121)
	at org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment$Companion.createForProduction(KotlinCoreEnvironment.kt:425)
	at org.javacs.kt.compiler.CompilationEnvironment.<init>(Compiler.kt:101)
	at org.javacs.kt.compiler.Compiler.<init>(Compiler.kt:451)
	at org.javacs.kt.CompilerClassPath.<init>(CompilerClassPath.kt:19)
	at org.javacs.kt.KotlinLanguageServer.<init>(KotlinLanguageServer.kt:24)
	at org.javacs.kt.MainKt.main(Main.kt:44)
Caused by: java.lang.reflect.InaccessibleObjectException: Unable to make protected void java.util.ResourceBundle.setParent(java.util.ResourceBundle) accessible: module java.base does not "opens java.util" to unnamed module @14899482
	at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:357)
	at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:297)
	at java.base/java.lang.reflect.Method.checkCanSetAccessible(Method.java:199)
	at java.base/java.lang.reflect.Method.setAccessible(Method.java:193)
	at com.intellij.util.ReflectionUtil.makeAccessible(ReflectionUtil.java:252)
	at com.intellij.util.ReflectionUtil.getDeclaredMethod(ReflectionUtil.java:269)
	at com.intellij.DynamicBundle.<clinit>(DynamicBundle.java:22)
	... 11 more
[Info  - 4:47:17 PM] Connection to server got closed. Server will restart.
Exception in thread "main" java.lang.ExceptionInInitializerError
	at com.intellij.pom.java.LanguageLevel.<clinit>(LanguageLevel.java:25)
	at com.intellij.core.CoreLanguageLevelProjectExtension.<init>(CoreLanguageLevelProjectExtension.java:26)
	at com.intellij.core.JavaCoreProjectEnvironment.<init>(JavaCoreProjectEnvironment.java:42)
	at org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreProjectEnvironment.<init>(KotlinCoreProjectEnvironment.kt:26)
	at org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment$ProjectEnvironment.<init>(KotlinCoreEnvironment.kt:121)
	at org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment$Companion.createForProduction(KotlinCoreEnvironment.kt:425)
	at org.javacs.kt.compiler.CompilationEnvironment.<init>(Compiler.kt:101)
	at org.javacs.kt.compiler.Compiler.<init>(Compiler.kt:451)
	at org.javacs.kt.CompilerClassPath.<init>(CompilerClassPath.kt:19)
	at org.javacs.kt.KotlinLanguageServer.<init>(KotlinLanguageServer.kt:24)
	at org.javacs.kt.MainKt.main(Main.kt:44)
Caused by: java.lang.reflect.InaccessibleObjectException: Unable to make protected void java.util.ResourceBundle.setParent(java.util.ResourceBundle) accessible: module java.base does not "opens java.util" to unnamed module @14899482
	at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:357)
	at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:297)
	at java.base/java.lang.reflect.Method.checkCanSetAccessible(Method.java:199)
	at java.base/java.lang.reflect.Method.setAccessible(Method.java:193)
	at com.intellij.util.ReflectionUtil.makeAccessible(ReflectionUtil.java:252)
	at com.intellij.util.ReflectionUtil.getDeclaredMethod(ReflectionUtil.java:269)
	at com.intellij.DynamicBundle.<clinit>(DynamicBundle.java:22)
	... 11 more
[Info  - 4:47:18 PM] Connection to server got closed. Server will restart.
Exception in thread "main" java.lang.ExceptionInInitializerError
	at com.intellij.pom.java.LanguageLevel.<clinit>(LanguageLevel.java:25)
	at com.intellij.core.CoreLanguageLevelProjectExtension.<init>(CoreLanguageLevelProjectExtension.java:26)
	at com.intellij.core.JavaCoreProjectEnvironment.<init>(JavaCoreProjectEnvironment.java:42)
	at org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreProjectEnvironment.<init>(KotlinCoreProjectEnvironment.kt:26)
	at org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment$ProjectEnvironment.<init>(KotlinCoreEnvironment.kt:121)
	at org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment$Companion.createForProduction(KotlinCoreEnvironment.kt:425)
	at org.javacs.kt.compiler.CompilationEnvironment.<init>(Compiler.kt:101)
	at org.javacs.kt.compiler.Compiler.<init>(Compiler.kt:451)
	at org.javacs.kt.CompilerClassPath.<init>(CompilerClassPath.kt:19)
	at org.javacs.kt.KotlinLanguageServer.<init>(KotlinLanguageServer.kt:24)
	at org.javacs.kt.MainKt.main(Main.kt:44)
Caused by: java.lang.reflect.InaccessibleObjectException: Unable to make protected void java.util.ResourceBundle.setParent(java.util.ResourceBundle) accessible: module java.base does not "opens java.util" to unnamed module @14899482
	at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:357)
	at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:297)
	at java.base/java.lang.reflect.Method.checkCanSetAccessible(Method.java:199)
	at java.base/java.lang.reflect.Method.setAccessible(Method.java:193)
	at com.intellij.util.ReflectionUtil.makeAccessible(ReflectionUtil.java:252)
	at com.intellij.util.ReflectionUtil.getDeclaredMethod(ReflectionUtil.java:269)
	at com.intellij.DynamicBundle.<clinit>(DynamicBundle.java:22)
	... 11 more
[Info  - 4:47:19 PM] Connection to server got closed. Server will restart.
Exception in thread "main" java.lang.ExceptionInInitializerError
	at com.intellij.pom.java.LanguageLevel.<clinit>(LanguageLevel.java:25)
	at com.intellij.core.CoreLanguageLevelProjectExtension.<init>(CoreLanguageLevelProjectExtension.java:26)
	at com.intellij.core.JavaCoreProjectEnvironment.<init>(JavaCoreProjectEnvironment.java:42)
	at org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreProjectEnvironment.<init>(KotlinCoreProjectEnvironment.kt:26)
	at org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment$ProjectEnvironment.<init>(KotlinCoreEnvironment.kt:121)
	at org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment$Companion.createForProduction(KotlinCoreEnvironment.kt:425)
	at org.javacs.kt.compiler.CompilationEnvironment.<init>(Compiler.kt:101)
	at org.javacs.kt.compiler.Compiler.<init>(Compiler.kt:451)
	at org.javacs.kt.CompilerClassPath.<init>(CompilerClassPath.kt:19)
	at org.javacs.kt.KotlinLanguageServer.<init>(KotlinLanguageServer.kt:24)
	at org.javacs.kt.MainKt.main(Main.kt:44)
Caused by: java.lang.reflect.InaccessibleObjectException: Unable to make protected void java.util.ResourceBundle.setParent(java.util.ResourceBundle) accessible: module java.base does not "opens java.util" to unnamed module @14899482
	at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:357)
	at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:297)
	at java.base/java.lang.reflect.Method.checkCanSetAccessible(Method.java:199)
	at java.base/java.lang.reflect.Method.setAccessible(Method.java:193)
	at com.intellij.util.ReflectionUtil.makeAccessible(ReflectionUtil.java:252)
	at com.intellij.util.ReflectionUtil.getDeclaredMethod(ReflectionUtil.java:269)
	at com.intellij.DynamicBundle.<clinit>(DynamicBundle.java:22)
	... 11 more
[Info  - 4:47:20 PM] Connection to server got closed. Server will restart.
Exception in thread "main" java.lang.ExceptionInInitializerError
	at com.intellij.pom.java.LanguageLevel.<clinit>(LanguageLevel.java:25)
	at com.intellij.core.CoreLanguageLevelProjectExtension.<init>(CoreLanguageLevelProjectExtension.java:26)
	at com.intellij.core.JavaCoreProjectEnvironment.<init>(JavaCoreProjectEnvironment.java:42)
	at org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreProjectEnvironment.<init>(KotlinCoreProjectEnvironment.kt:26)
	at org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment$ProjectEnvironment.<init>(KotlinCoreEnvironment.kt:121)
	at org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment$Companion.createForProduction(KotlinCoreEnvironment.kt:425)
	at org.javacs.kt.compiler.CompilationEnvironment.<init>(Compiler.kt:101)
	at org.javacs.kt.compiler.Compiler.<init>(Compiler.kt:451)
	at org.javacs.kt.CompilerClassPath.<init>(CompilerClassPath.kt:19)
	at org.javacs.kt.KotlinLanguageServer.<init>(KotlinLanguageServer.kt:24)
	at org.javacs.kt.MainKt.main(Main.kt:44)
Caused by: java.lang.reflect.InaccessibleObjectException: Unable to make protected void java.util.ResourceBundle.setParent(java.util.ResourceBundle) accessible: module java.base does not "opens java.util" to unnamed module @14899482
	at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:357)
	at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:297)
	at java.base/java.lang.reflect.Method.checkCanSetAccessible(Method.java:199)
	at java.base/java.lang.reflect.Method.setAccessible(Method.java:193)
	at com.intellij.util.ReflectionUtil.makeAccessible(ReflectionUtil.java:252)
	at com.intellij.util.ReflectionUtil.getDeclaredMethod(ReflectionUtil.java:269)
	at com.intellij.DynamicBundle.<clinit>(DynamicBundle.java:22)
	... 11 more
[Error - 4:47:21 PM] Connection to server got closed. Server will not be restarted.

jzebedee avatar Apr 14 '21 21:04 jzebedee

This might be a combination of a Kotlin compiler bug and Java 16, enforcing access restrictions on reflection that were previously just warnings. Could you check whether the issue persists on an older Java version?

fwcd avatar Apr 14 '21 23:04 fwcd

I can confirm that it works on 15.0.2.7.1-amzn java version but it crashes on 16

gregkonush avatar May 18 '21 22:05 gregkonush

For anyone using neovim's builtin LSP, here's a solution:

local jdk_home = "/usr/lib/jvm/java-11-openjdk" -- Your actual jdk path
lsp_config.kotlin_language_server.setup {
  cmd_env = {
    PATH = jdk_home .. "/bin:" .. vim.env.PATH,
    JAVA_HOME = jdk_home,
  },
}

kraftwerk28 avatar Jul 05 '21 09:07 kraftwerk28

I have a similar sort of issue when invoking kotlin-languager-server. Context:

>javac --version
javac 16.0.2
>java --version
openjdk 16.0.2 2021-07-20
OpenJDK Runtime Environment (build 16.0.2+7)
OpenJDK 64-Bit Server VM (build 16.0.2+7, mixed mode)
Exception in thread "main" java.lang.NoClassDefFoundError: kotlin/jvm/internal/Intrinsics
	at org.javacs.kt.MainKt.main(Main.kt)
Caused by: java.lang.ClassNotFoundException: kotlin.jvm.internal.Intrinsics
	at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:636)
	at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:182)
	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:519)
	... 1 more

When I start kotlin-language-server from nvim with coc, it also crashes with: Server languageserver.kotlin failed to start: Error: Connection to server got closed. Server will not be restarted.

jmdaemon avatar Sep 17 '21 06:09 jmdaemon

I have the same issue as @jmdaemon, but I'm using Java version 17.

sebastiancarlos avatar Feb 11 '24 21:02 sebastiancarlos