scalameta / nvim-metals

A Metals plugin for Neovim
https://scalameta.org/metals/
Apache License 2.0
455 stars 74 forks source link

Can't import project using bleep as build tool #669

Closed KristianAN closed 1 month ago

KristianAN commented 2 months ago

Describe the bug

When trying to import the build after running setup-ide with bleep it fails to import the project with the following stacktrace

2024.04.25 12:32:25 INFO  Attempting to connect to the build server...
2024.04.25 12:32:25 INFO  Running BSP server List(/nix/store/r0xqwsjyyvzizxpn9a11x1qk2690d09v-bleep-0.0.3/bin/.bleep-wrapped, bsp)
2024.04.25 12:32:25 INFO  tracing is disabled for protocol BSP, to enable tracing of incoming and outgoing JSON messages create an empty file at /home/kristian/src/migrator/.metals/bsp.trace.json or /home/kristian/.cache/metals/bsp.trace.json
2024.04.25 12:32:27 INFO  Attempting to connect to the build server...
2024.04.25 12:32:27 INFO  Running BSP server List(/nix/store/r0xqwsjyyvzizxpn9a11x1qk2690d09v-bleep-0.0.3/bin/.bleep-wrapped, bsp)
2024.04.25 12:32:27 INFO  tracing is disabled for protocol BSP, to enable tracing of incoming and outgoing JSON messages create an empty file at /home/kristian/src/migrator/.metals/bsp.trace.json or /home/kristian/.cache/metals/bsp.trace.json
2024.04.25 12:32:28 INFO  BSP server: πŸ“™ Your build uses the default system JVM, which can change outside the build. For stable builds over time, let bleep manage your chosen JVM by adding it to bleep.yaml
2024.04.25 12:32:28 INFO  BSP server: πŸ“™ Your build uses the default system JVM, which can change outside the build. For stable builds over time, let bleep manage your chosen JVM by adding it to bleep.yaml
2024.04.25 12:32:28 INFO  BSP server: πŸ“— bootstrapped in 1 ms
2024.04.25 12:32:28 INFO  BSP server: πŸ“— bootstrapped in 1 ms
2024.04.25 12:32:28 INFO  BSP server: πŸ“— bloop-rifle: Starting compilation server
2024.04.25 12:32:28 INFO  BSP server: πŸ“— bloop-rifle: Starting compilation server
2024.04.25 12:32:29 INFO  BSP server: πŸ“— Listening to incoming JSONRPC BSP requests.
2024.04.25 12:32:29 INFO  BSP server: πŸ“— Listening to incoming JSONRPC BSP requests.
2024.04.25 12:32:29 INFO  time: Connected to build server in 2.81s
2024.04.25 12:32:29 INFO  time: Connected to build server in 4.02s
2024.04.25 12:32:29 INFO  Connected to Build server: bleep v0.0.3
2024.04.25 12:32:29 INFO  Connected to Build server: bleep v0.0.3
2024.04.25 12:32:29 INFO  BSP server: Apr 25, 2024 12:32:30 PM org.eclipse.lsp4j.jsonrpc.json.StreamMessageProducer fireError
2024.04.25 12:32:29 INFO  BSP server: SEVERE: Unable to create instance of class ch.epfl.scala.bsp4j.DependencyModulesParams. Registering an InstanceCreator or a TypeAdapter for this type, or adding a no-args constructor may fix this problem.
2024.04.25 12:32:29 INFO  BSP server: Apr 25, 2024 12:32:30 PM org.eclipse.lsp4j.jsonrpc.json.StreamMessageProducer fireError
2024.04.25 12:32:29 INFO  BSP server: java.lang.RuntimeException: Unable to create instance of class ch.epfl.scala.bsp4j.DependencyModulesParams. Registering an InstanceCreator or a TypeAdapter for this type, or adding a no-args constructor may fix t
his problem.
2024.04.25 12:32:29 INFO  BSP server: SEVERE: Unable to create instance of class ch.epfl.scala.bsp4j.DependencyModulesParams. Registering an InstanceCreator or a TypeAdapter for this type, or adding a no-args constructor may fix this problem.
2024.04.25 12:32:29 INFO  BSP server:   at com.google.gson.internal.ConstructorConstructor$19.construct(ConstructorConstructor.java:373)
2024.04.25 12:32:29 INFO  BSP server: java.lang.RuntimeException: Unable to create instance of class ch.epfl.scala.bsp4j.DependencyModulesParams. Registering an InstanceCreator or a TypeAdapter for this type, or adding a no-args constructor may fix t
his problem.
2024.04.25 12:32:29 INFO  BSP server:   at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$FieldReflectionAdapter.createAccumulator(ReflectiveTypeAdapterFactory.java:427)
2024.04.25 12:32:29 INFO  BSP server:   at com.google.gson.internal.ConstructorConstructor$19.construct(ConstructorConstructor.java:373)
2024.04.25 12:32:29 INFO  BSP server:   at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:383)
2024.04.25 12:32:29 INFO  BSP server:   at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$FieldReflectionAdapter.createAccumulator(ReflectiveTypeAdapterFactory.java:427)
2024.04.25 12:32:29 INFO  BSP server:   at com.google.gson.Gson.fromJson(Gson.java:1227)
2024.04.25 12:32:29 INFO  BSP server:   at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:383)
2024.04.25 12:32:29 INFO  BSP server:   at com.google.gson.Gson.fromJson(Gson.java:1186)
2024.04.25 12:32:29 INFO  BSP server:   at com.google.gson.Gson.fromJson(Gson.java:1227)
2024.04.25 12:32:29 INFO  BSP server:   at org.eclipse.lsp4j.jsonrpc.json.adapters.MessageTypeAdapter.fromJson(MessageTypeAdapter.java:329)
2024.04.25 12:32:29 INFO  BSP server:   at com.google.gson.Gson.fromJson(Gson.java:1186)
2024.04.25 12:32:29 INFO  BSP server:   at org.eclipse.lsp4j.jsonrpc.json.adapters.MessageTypeAdapter.fromJson(MessageTypeAdapter.java:329)
2024.04.25 12:32:29 INFO  BSP server:   at org.eclipse.lsp4j.jsonrpc.json.adapters.MessageTypeAdapter.parseParams(MessageTypeAdapter.java:249)
2024.04.25 12:32:29 INFO  BSP server:   at org.eclipse.lsp4j.jsonrpc.json.adapters.MessageTypeAdapter.parseParams(MessageTypeAdapter.java:249)
2024.04.25 12:32:29 INFO  BSP server:   at org.eclipse.lsp4j.jsonrpc.json.adapters.MessageTypeAdapter.read(MessageTypeAdapter.java:119)
2024.04.25 12:32:29 INFO  BSP server:   at org.eclipse.lsp4j.jsonrpc.json.adapters.MessageTypeAdapter.read(MessageTypeAdapter.java:119)
2024.04.25 12:32:29 INFO  BSP server:   at org.eclipse.lsp4j.jsonrpc.json.adapters.MessageTypeAdapter.read(MessageTypeAdapter.java:55)
2024.04.25 12:32:29 INFO  BSP server:   at com.google.gson.Gson.fromJson(Gson.java:1227)
2024.04.25 12:32:29 INFO  BSP server:   at com.google.gson.Gson.fromJson(Gson.java:1186)
2024.04.25 12:32:29 INFO  BSP server:   at org.eclipse.lsp4j.jsonrpc.json.adapters.MessageTypeAdapter.read(MessageTypeAdapter.java:55)
2024.04.25 12:32:29 INFO  BSP server:   at org.eclipse.lsp4j.jsonrpc.json.MessageJsonHandler.parseMessage(MessageJsonHandler.java:119)
2024.04.25 12:32:29 INFO  BSP server:   at com.google.gson.Gson.fromJson(Gson.java:1227)
2024.04.25 12:32:29 INFO  BSP server:   at com.google.gson.Gson.fromJson(Gson.java:1186)
2024.04.25 12:32:29 INFO  BSP server:   at org.eclipse.lsp4j.jsonrpc.json.MessageJsonHandler.parseMessage(MessageJsonHandler.java:114)
2024.04.25 12:32:29 INFO  BSP server:   at org.eclipse.lsp4j.jsonrpc.json.MessageJsonHandler.parseMessage(MessageJsonHandler.java:119)
2024.04.25 12:32:29 INFO  BSP server:   at org.eclipse.lsp4j.jsonrpc.json.StreamMessageProducer.handleMessage(StreamMessageProducer.java:193)
2024.04.25 12:32:29 INFO  BSP server:   at org.eclipse.lsp4j.jsonrpc.json.MessageJsonHandler.parseMessage(MessageJsonHandler.java:114)
2024.04.25 12:32:29 INFO  BSP server:   at org.eclipse.lsp4j.jsonrpc.json.StreamMessageProducer.handleMessage(StreamMessageProducer.java:193)
2024.04.25 12:32:29 INFO  BSP server:   at org.eclipse.lsp4j.jsonrpc.json.StreamMessageProducer.listen(StreamMessageProducer.java:94)
2024.04.25 12:32:29 INFO  BSP server:   at org.eclipse.lsp4j.jsonrpc.json.StreamMessageProducer.listen(StreamMessageProducer.java:94)
2024.04.25 12:32:29 INFO  BSP server:   at org.eclipse.lsp4j.jsonrpc.json.ConcurrentMessageProcessor.run(ConcurrentMessageProcessor.java:113)
2024.04.25 12:32:29 INFO  BSP server:   at org.eclipse.lsp4j.jsonrpc.json.ConcurrentMessageProcessor.run(ConcurrentMessageProcessor.java:113)
2024.04.25 12:32:29 INFO  BSP server:   at java.base@17.0.6/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)
2024.04.25 12:32:29 INFO  BSP server:   at java.base@17.0.6/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)
2024.04.25 12:32:29 INFO  BSP server:   at java.base@17.0.6/java.util.concurrent.FutureTask.run(FutureTask.java:264)
2024.04.25 12:32:29 INFO  BSP server:   at java.base@17.0.6/java.util.concurrent.FutureTask.run(FutureTask.java:264)
2024.04.25 12:32:29 INFO  BSP server:   at java.base@17.0.6/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
2024.04.25 12:32:29 INFO  BSP server:   at java.base@17.0.6/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
2024.04.25 12:32:29 INFO  BSP server:   at java.base@17.0.6/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
2024.04.25 12:32:29 INFO  BSP server:   at java.base@17.0.6/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
2024.04.25 12:32:29 INFO  BSP server:   at java.base@17.0.6/java.lang.Thread.run(Thread.java:833)
2024.04.25 12:32:29 INFO  BSP server:   at java.base@17.0.6/java.lang.Thread.run(Thread.java:833)
2024.04.25 12:32:29 INFO  BSP server:   at com.oracle.svm.core.thread.PlatformThreads.threadStartRoutine(PlatformThreads.java:775)
2024.04.25 12:32:29 INFO  BSP server:   at com.oracle.svm.core.thread.PlatformThreads.threadStartRoutine(PlatformThreads.java:775)
2024.04.25 12:32:29 INFO  BSP server:   at com.oracle.svm.core.posix.thread.PosixPlatformThreads.pthreadStartRoutine(PosixPlatformThreads.java:203)
2024.04.25 12:32:29 INFO  BSP server:   at com.oracle.svm.core.posix.thread.PosixPlatformThreads.pthreadStartRoutine(PosixPlatformThreads.java:203)
2024.04.25 12:32:29 INFO  BSP server: Caused by: java.lang.reflect.InvocationTargetException
2024.04.25 12:32:29 INFO  BSP server: Caused by: java.lang.reflect.InvocationTargetException
2024.04.25 12:32:29 INFO  BSP server:   at java.base@17.0.6/java.lang.reflect.Method.invoke(Method.java:568)
2024.04.25 12:32:29 INFO  BSP server:   at java.base@17.0.6/java.lang.reflect.Method.invoke(Method.java:568)
2024.04.25 12:32:29 INFO  BSP server:   at com.google.gson.internal.UnsafeAllocator$1.newInstance(UnsafeAllocator.java:63)
2024.04.25 12:32:29 INFO  BSP server:   at com.google.gson.internal.UnsafeAllocator$1.newInstance(UnsafeAllocator.java:63)
2024.04.25 12:32:29 INFO  BSP server:   at com.google.gson.internal.ConstructorConstructor$19.construct(ConstructorConstructor.java:370)
2024.04.25 12:32:29 INFO  BSP server:   ... 22 more
2024.04.25 12:32:29 INFO  BSP server:   at com.google.gson.internal.ConstructorConstructor$19.construct(ConstructorConstructor.java:370)
2024.04.25 12:32:29 INFO  BSP server: Caused by: java.lang.IllegalArgumentException: Type ch.epfl.scala.bsp4j.DependencyModulesParams is instantiated reflectively but was never registered. Register the type by adding "unsafeAllocated" for the type in
 reflect-config.json.
2024.04.25 12:32:29 INFO  BSP server:   ... 22 more
2024.04.25 12:32:29 INFO  BSP server:   at com.oracle.svm.core.graal.snippets.SubstrateAllocationSnippets.instanceHubErrorStub(SubstrateAllocationSnippets.java:309)
2024.04.25 12:32:29 INFO  BSP server:   at jdk.unsupported@17.0.6/sun.misc.Unsafe.allocateInstance(Unsafe.java:864)
2024.04.25 12:32:29 INFO  BSP server: Caused by: java.lang.IllegalArgumentException: Type ch.epfl.scala.bsp4j.DependencyModulesParams is instantiated reflectively but was never registered. Register the type by adding "unsafeAllocated" for the type in
 reflect-config.json.
2024.04.25 12:32:29 INFO  BSP server:   ... 25 more
2024.04.25 12:32:29 INFO  BSP server: 
2024.04.25 12:32:29 INFO  BSP server:   at com.oracle.svm.core.graal.snippets.SubstrateAllocationSnippets.instanceHubErrorStub(SubstrateAllocationSnippets.java:309)
2024.04.25 12:32:29 INFO  BSP server:   at jdk.unsupported@17.0.6/sun.misc.Unsafe.allocateInstance(Unsafe.java:864)
2024.04.25 12:32:29 INFO  BSP server:   ... 25 more
2024.04.25 12:32:29 INFO  BSP server: 
2024.04.25 12:32:36 INFO  no build target found for /home/kristian/src/migrator/migrator/src/scala/com/foo/App.scala. Using presentation compiler with project's scala-library version: 3.3.3

I have tested it with Emacs lsp-mode where it works fine (have not tested vscode, but I assume it works fine there)

Expected behavior

Builds are imported in nvim-metals with bleep like other editors.

Operating system

Linux

Version of Metals

1.3.0

Commit of nvim-metals

4f9bf0c821092f20dd34c1a4ea5b07b0500ff089

ckipp01 commented 2 months ago

Thanks for the report @KristianAN although nvim-metals really doesn't have anything to do with the import here. All it's down is setting the root and basically initializing Metals. The stack trace here is coming directly from Bleep and the BSP server here seems to be puking. So the issue here seems to lie somewhere between Metals <-> Bleep. Do you have an example project where this is happening that I can test?

KristianAN commented 2 months ago

Here is the project where I got the error. Which is just a initialized bleep project. https://github.com/KristianAN/migrator

ckipp01 commented 2 months ago

So I just tested this both with VS Code and with nvim-metals and they both seem to fail with this result. Are you sure it doesn't have to do with Java version?

KristianAN commented 2 months ago

I don't think that Java version has anything to do with it. if I add //> using dep com.lihaoyi::fansi:0.5.0 to App.scala and run scala-cli setup-ide migrator metals imports the build without issue and everything works as expected

running echo $JAVA_HOME gives /nix/store/z16qjcmxxiki2ah8wvg4qp0kp96a5s84-temurin-bin-17.0.9 as expected by the flake.nix definition. It's very strange that it works in emacs and not other editors!

ckipp01 commented 1 month ago

So I just tested this again with VS Code and I still get these errors. I'd recommend opening up an issue with Bleep and explaining because I don't see any reason how this can be associated to nvim-metals seeing that it happens for me with multiple clients.

joan38 commented 1 month ago

I'm experiencing the same issue on my side

KristianAN commented 1 month ago

I'm experiencing the same issue on my side

This will be fixed in the next release of bleep.