dap-java 指定启动 java 的路径

当我在使用 dap-mode 对 java 程序进行调试时,需要使用与不同 java 版本。(现在的 eclipse.jdt.ls 在 jdk8中不能用,但我项目的版本开发使用jdk8)

我设置了 lsp-java-java-path 它将会两个都会应用这个值,好像 elipse.jdt.ls 和启动调试应用使用的同一个命令变量值。我查看了源码发现 dap-java-java-command 但是它只在测试启动中使用了。请问可以将eclipse.jdt.ls 使用的jdk和dap-debug 时使用的jdk 分别指定吗?

我还发现一个变量是 lsp-java-configuration-runtimes 但是不起作用。还是说要有一些项目层面的设置(如:.projectile, dir-local.el 等)?

  (setq lsp-java-java-path "/usr/lib/jvm/java-11-openjdk/bin/java"
        lsp-java-configuration-runtimes '[(:name "JavaSE-1.8"
                                           :path "/usr/lib/jvm/java-8-openjdk/"
                                           :default t)
                                          (:name "JavaSE-11"
                                           :path "/usr/lib/jvm/java-11-openjdk/"
                                           )])

:laughing:最近写Spring都用vscode,完全不用配置啥就可以写。 设置了java-runtime,运行项目的时候,lsp应该还会看你的项目里maven或gradle里的设置,到底是用哪个jdk版本。

lsp-java上说了,如果后来改了jdk的路径要更新一下文件。

Have a look at ~/.emacs.d/workspace/.metadata/.plugins/org.eclipse.jdt.launching/libraryInfos.xml. If you updated your local java path and want LSP to use the new version, try removing the ~/.emacs.d/workspace/ directory and relaunch LSP. Also see #114. If you have multiple java JDK versions installed and want to change the version of java used by LSP, also need to set lsp-java-configuration-runtimes. An example for setting lsp-java-configuration-runtimes:

我仔细读了这个,感觉这个是eclipse.jdt.ls 服务器在jdk8上运行和编译有问题。我之前也遇见过lsp-java在jdk8上不能启动,在jdk11 上才能使用。

我的问题目标是在调试启动的应用程序的时指定 java的版本或路径。但是 lsp服务器使用的 java命令前缀和 dap-debug 启动调试应用服务是相同的,怎么可以改正它。我使用lsp-java 进行开发编译都没有任何问题,主要是调试时,后台启动的用于远程调试应用程序的java版本不对,项目需要jdk8, lsp需要jdk11。

  1. java 版本 image

  2. 项目使用的jdk 版本

  3. 通过变量设置 lsp使用的jdk

  4. 通过dap-debug 启动的应用程序进程 (就是想改它, 让它和2中的一致)

  5. eclipse.jdt.ls 进程

要用jdk8的话,eclipse.jdt.ls的新版本都不支持,不能超过0.57,所以设置一下版本。 我现在用vscode,jdk8不用设置都直接调试,估计vscode插件自己做了处理。

(setq lsp-java-jdt-download-url  "https://download.eclipse.org/jdtls/milestones/0.57.0/jdt-language-server-0.57.0-202006172108.tar.gz")