mopemope/meghanada-emacs@70bfbf5 -> mopemope/meghanada-emacs@e119c7b
emacs-eclim/emacs-eclim@23f5b29 -> emacs-eclim/emacs-eclim@222ddd4
emacs-lsp/lsp-java@fe11824 -> emacs-lsp/lsp-java@811760a
We're also transitioning from abbreviated SHA1 hashes to full ones. See
|
||
---|---|---|
.. | ||
autoload | ||
+eclim.el | ||
+lsp.el | ||
+meghanada.el | ||
config.el | ||
doctor.el | ||
packages.el | ||
README.org |
lang/java
Description
This module adds java support to Doom Emacs, including android-mode
and
groovy-mode
.
Module Flags
+lsp
Enables integration for the eclipse.jdt.ls LSP server.+meghanada
Enables the meghanada-mode
The +lsp
and +meghanada
packages are mutually exclusive and do not work
together. At the time of writing the +meghanada
is already configured whereas
+lsp
needs to manual configuring.
The lsp
test runner requires that :tools (debugger +lsp)
is enabled, as this
provides dap-mode
which contains the Java test runner.
Prerequisites
This module requires the Java SDK.
OpenJDK 11
Ubuntu
sudo apt-get install openjdk-11-jdk-headless
Fedora
sudo dnf install java-11-openjdk
Oracle JDK 11
Ubuntu
sudo add-apt-repository ppa:linuxuprising/java
sudo apt update
sudo apt install oracle-java11-installer
sudo apt install oracle-java11-set-default
Fedora
curl -O https://download.java.net/java/GA/jdk11/9/GPL/openjdk-11.0.2_linux-x64_bin.tar.gz
tar zxvf openjdk-11.0.2_linux-x64_bin.tar.gz
sudo mv jdk-11.0.2/ /usr/local/
Open /etc/profile.d/jdk11.sh
as root and add
export JAVA_HOME=/usr/local/jdk-11.0.2
export PATH=$PATH:$JAVA_HOME/bin
Save the file and source the file
source /etc/profile.d/jdk11.sh
java -version
Multiple Java Versions
It is common to need support for multiple Java versions. You can use a generic tool like jabba to install and manage multiple Java versions on any OS.
To switch between Java versions in Doom, you can use direnv and the direnv module. To set a
Java version for a particular project, create a .envrc
pointing to the Java
installation in the root of the project:
PATH_add ~/.jabba/jdk/adopt@1.11.0-3
JAVA_HOME=~/.jabba/jdk/adopt@1.11.0-3
And then run direnv allow .
in the project directory. If the direnv
module
is enabled, then Doom will automatically source this environment before
executing the LSP server.
Features
+lsp
features
According to https://github.com/emacs-lsp/lsp-java it adds
- As you type reporting of parsing and compilation errors (via flycheck/lsp-ui)
- Code completion - using company-lsp or builtin complete-at-point
- Javadoc hovers - using lsp-ui
- Code actions - using lsp-ui
- Code outline - using builtin imenu
- Code navigation - using builtin xref
- Code lens (references/implementations) - using builtin xref
- Highlights
- Code formatting
- Maven pom.xml project support
- Limited Gradle support
- Visual debugger - dap-mode
- Test runner - dap-mode
- Project explorer integration - treemacs
- Integration with Spring Initializr
+meghanada
features
According to https://github.com/mopemope/meghanada-emacs/ it adds
- Auto-update server module
- Gradle and Maven and Eclipse project support
- No need build tool's plugin
- Run build tool task
- Compile your project
- Syntax check and analyze java source (
flycheck-meghanada
) - Support
Generic Types
- Code completion with company-mode (
company-meghanada
) - Optimize import and sort
- Jump declaration
- Run JUnit test (include test runner)
- Diagnostic reporting with flycheck (
flycheck-meghanada
) - Show symbol's type info with
el-doc
- Search references
- Full-featured text search
Configuration
+lsp
Install the eclipse server by executing M-x lsp-install-server
and selecting
jdtls
. After that any newly opened java
files should start the LSP server
automatically.
To update the server, perform SPC u M-x lsp-install-server
.
Note that if you change Java version you may need to remove the LSP server and
install it again. You can do this with M-x +lsp/uninstall-server
followed by
M-x lsp-install-server
.
Enable the :tools (debugger +lsp)
module to get test runner support.