mfussenegger / nvim-jdtls

Extensions for the built-in LSP support in Neovim for eclipse.jdt.ls
GNU General Public License v3.0
1.09k stars 62 forks source link

LinkedTreeMap cannot be cast to ArrayList #385

Closed 3l0w closed 1 year ago

3l0w commented 1 year ago

LSP client configuration

{
   java = {
     autobuild = {
       enabled = true,
     },
     format = {
       tabSize = 20,
     },
     trace = {
        server = "verbose",
      },
      signatureHelp = {
        enabled = true
      },
      referenceCodeLens = {
        enabled = true
      },
      eclipse = {
        downloadSources = true,
      },
      configuration = {
        updateBuildConfiguration = "interactive",
        {          name = "JavaSE-18",          path = "/usr/lib/jvm/java-19-openjdk/",        },
        {          name = "JavaSE-17",          path = "/usr/lib/jvm/java-19-openjdk/",        },
        {          name = "JavaSE-16",          path = "/usr/lib/jvm/java-19-openjdk/",        },
        {          name = "JavaSE-15",          path = "/usr/lib/jvm/java-19-openjdk/",        },
        {          name = "JavaSE-14",          path = "/usr/lib/jvm/java-19-openjdk/",        },
        {          name = "JavaSE-11",          path = "/usr/lib/jvm/java-19-openjdk/",        },
        {          name = "JavaSE-1.8",          path = "/usr/lib/jvm/java-8-openjdk/",        },
      },
      maven = {
        downloadSources = true,
      },
      implementationsCodeLens = {
        enabled = true,
      },
      referencesCodeLens = {
        enabled = true,
      },
      references = {
        includeDecompiledSources = true,
      },
      progressReports = {
        enabled = true
      },
    },
    extendedClientCapabilities = extendedClientCapabilities,
    sources = {
      organizeImports = {
        starThreshold = 9999,
        staticStarThreshold = 9999,
      },
    },
    codeGeneration = {
      toString = {
        template = "${object.className}{${member.name()}=${member.value}, ff${otherMembers}}",
      },
      useBlocks = true,
    },
  }

My full config file can be found here

Eclipse.jdt.ls version

1.18.0

Steps to Reproduce

I have maven 3.8.6, java 19 and nvim 0.8.1

Expected Result

No error in console

Actual Result

class com.google.gson.internal.LinkedTreeMap cannot be cast to class java.util.ArrayList (com.google.gson.internal.LinkedTreeMap is in unnamed module of loader org.eclipse.osgi.internal.loader.EquinoxClassLoader @62452cc9; java.util.ArrayList is in module java.base of loader 'bootstrap')
java.lang.ClassCastException: class com.google.gson.internal.LinkedTreeMap cannot be cast to class java.util.ArrayList (com.google.gson.internal.LinkedTreeMap is in unnamed module of loader org.eclipse.osgi.internal.loader.EquinoxClassLoader @62452cc9; java.util.ArrayList is in module java.base of loader 'bootstrap')
    at org.eclipse.jdt.ls.core.internal.handlers.JDTLanguageServer.synchronizeBundles(JDTLanguageServer.java:387)
    at org.eclipse.jdt.ls.core.internal.handlers.JDTLanguageServer.run(JDTLanguageServer.java:285)
    at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63)

Idk why but when i modify my config it doesn't seem to have any effect.... Also i can't get to work the jump to a class, jdt always open a decompilled file

mfussenegger commented 1 year ago

The cast error is harmless, see https://github.com/eclipse/eclipse.jdt.ls/pull/2370

Also i can't get to work the jump to a class, jdt always open a decompilled file

If it's jdk classes you need to have a jdk installation that contains the sources. The packages in distributions might strip them away or have a dedicated package