java自动补全在工程里面失效,在其他临时的地方却可以

前提:我已经跟着Quick start配置好了

在临时的目录路径下~/Develop/temp建立了一个临时的xxx.java文件,测试了一下。好像一切都还ok 代码补全也有,lsp-treemacs-symbols也可以召唤出来。反正可以满足基本的编码环境

然后我使用lsp-java-spring-initializer 建立了一个工程

但是在这个工程里面创建的 java 文件,好像symbols也没有,自动补全也没有

就很疑惑不知道啥情况

然后下面是mode-line的截图对比

那个小灯泡也没了


我这边的相关配置


;; java env
(setq lsp-java-server-install-dir "~/Develop/soft/jdt-language-server-1.26")
(use-package projectile)
(use-package flycheck)
(use-package yasnippet
  :config (yas-global-mode))
(use-package lsp-mode
  :hook ((lsp-mode . lsp-enable-which-key-integration))
  :config (setq lsp-completion-enable-additional-text-edit nil))
(use-package hydra)
(use-package company)
(use-package lsp-ui)
(use-package which-key
  :config (which-key-mode))
(use-package lsp-java
  :config (add-hook 'java-mode-hook 'lsp))
(use-package dap-mode
  :after lsp-mode
  :config (dap-auto-configure-mode))
(use-package dap-java
  :ensure nil)
(use-package helm-lsp)
(use-package helm
  :config (helm-mode))


(use-package treemacs
  :defer t
  :config
  (treemacs-tag-follow-mode)
  :bind
  (:map global-map
        ("M-0"       . treemacs-select-window)
        ("C-x t 1"   . treemacs-delete-other-windows)
        ("C-x t t"   . treemacs)
        ("C-x t B"   . treemacs-bookmark)
        ;; ("C-x t C-t" . treemacs-find-file)
        ("C-x t M-t" . treemacs-find-tag))
  (:map treemacs-mode-map
	("/" . treemacs-advanced-helpful-hydra)))

(use-package treemacs-projectile
  :after (treemacs projectile))

(use-package lsp-treemacs
  :after (treemacs lsp))

大佬们看看问题出在哪?

大佬们,我大概定位到问题出在哪里了,jdtls上

我注意到 LSP :: Connected to [jdtls:83923 /Users/mmmmmcclxxvii/Develop/temp].

然后在temp目录下的xxx.java ,lsp-java是可以正常工作,代码补全,symbols等,都是可以的 但是在其他路径下就不行了

是不是jdtls 只能监听这一个目录下???还是需要怎么配置?

暂时是解决了,原因就是jdtls没有工作,两个因素

  1. jdtls的版本0.57以上就需要jdk11以上,lsp-java-spring-initializer中选择的java版本要和jdtls对应
  2. jdtls connect的那个目录设置为 workspace,//实验下来的现象是这样的。 比如如果 jdtls connect to 的是 xxx/a, 只有在a下面的 java 文件 lsp-java是工作的 如果去 xxx/b 这个目录下面去 创建一个 java 文件,他是不会工作的。

那这里又有一个问题,那怎么切换 jdtls 的 这个叫 connection?