lsp-java有什么办法直接运行main class吗?

lsp-java有什么办法直接运行main class吗?不启动debug,因为debug断点会卡住。

搭车也问一下,找了很久也没有找到什么好办法,有些复杂的项目需要把classpath配置好,然后再执行main class。

The run capability is available if you specify :noDebug t in the dap template. You could create new templates using dap-debug-edit-template .

根据这个配置了一段compile_attach的模板。虽然设置了:noDebug t,但是还是会跑进断点。不过好在进程不会自己退出,也算是另一种运行模式了吧。

(use-package dap-mode
  :bind
  (("<f5>" . dap-debug)
   ("<f7>" . dap-step-in)
   ("<M-f7>" . dap-step-out)
   ("<f8>" . dap-next)
   ("<f9>" . dap-continue))
  :hook
  ((java-mode . dap-mode)
   (java-mode . dap-ui-mode))
  :config
  (require 'dap-java)
  (dap-register-debug-template
   "Java Run"
   (list :type "java"
         :request "compile_attach"
         :args ""
         :noDebug t
         :cwd nil
         :host "localhost"
         :request "launch"
         :modulePaths []
         :classPaths nil
         :name "JavaRun"
         :projectName nil
         :mainClass nil)))

虽然设置了:noDebug t,但是还是会跑进断点。

这算是bug还是使用方式不对 :thinking:

之前request写错了,写成:request compile_attach肯定会进断点。直接用:request launch就可以跑了。

(dap-register-debug-template
   "Java Run"
   (list :type "java"
         :request "launch"
         :args ""
         :noDebug t
         :cwd nil
         :host "localhost"
         :request "launch"
         :modulePaths []
         :classPaths nil
         :name "JavaRun"
         :projectName nil
         :mainClass nil)))