Der Eclipse JDT Language Server ist eine für die Java-Sprache spezifische Implementierung des Language Server-Protokolls und kann mit jedem Editor verwendet werden, der das Protokoll unterstützt, um eine gute Unterstützung für die Java-Sprache zu bieten. Der Server basiert auf:
Für die Ausführung des Sprachservers ist (mindestens) eine Laufzeitumgebung von Java 17 erforderlich. Dies sollte entweder in der Umgebungsvariablen JAVA_HOME
oder im Pfad des Benutzers festgelegt werden.
Es gibt mehrere Möglichkeiten, eclipse.jdt.ls zu installieren:
jdtls
oder eclipse.jdt.ls
.git clone
und erstellen Sie das Projekt über JAVA_HOME=/path/to/java/17 ./mvnw clean verify
. Hängen Sie optional -DskipTests=true
an, um die Tests zu umgehen. Dieser Befehl erstellt den Server im Ordner ./org.eclipse.jdt.ls.product/target/repository
.Einige Editoren oder Editorerweiterungen bündeln eclipse.jdt.ls oder enthalten Logik für die Installation. In diesem Fall müssen Sie lediglich die Editor-Erweiterung installieren. Für Visual Studio Code können Sie beispielsweise das Extension Pack für Java installieren und es erledigt den Rest.
Wenn Sie eclipse.jdt.ls aus dem Quellcode erstellt haben, cd
in ./org.eclipse.jdt.ls.product/target/repository
. Wenn Sie einen Meilenstein- oder Snapshot-Build heruntergeladen haben, extrahieren Sie den Inhalt.
Um den Server im aktiven Terminal zu starten, passen Sie den folgenden Befehl wie weiter unten beschrieben an und führen Sie ihn aus:
java
-Declipse.application=org.eclipse.jdt.ls.core.id1
-Dosgi.bundles.defaultStartLevel=4
-Declipse.product=org.eclipse.jdt.ls.core.product
-Dlog.level=ALL
-Xmx1G
--add-modules=ALL-SYSTEM
--add-opens java.base/java.util=ALL-UNNAMED
--add-opens java.base/java.lang=ALL-UNNAMED
-jar ./plugins/org.eclipse.equinox.launcher_1.5.200.v20180922-1751.jar
-configuration ./config_linux
-data /path/to/data
-configuration
: Dies ist der Pfad zum Konfigurationsverzeichnis Ihrer Plattform. Verwenden Sie für Linux ./config_linux
. Verwenden Sie für Windows ./config_win
. Verwenden Sie für Mac/OS X ./config_mac
.-jar ./plugins/...
so, dass er mit der Version übereinstimmt, die Sie erstellt oder heruntergeladen haben.-data
: Ein absoluter Pfad zu Ihrem Datenverzeichnis. eclipse.jdt.ls speichert darin arbeitsbereichsspezifische Informationen. Dies sollte pro Arbeitsbereich/Projekt eindeutig sein. Wenn Sie eclipse.jdt.ls selbst debuggen möchten, fügen Sie -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=1044
direkt nach java
hinzu und stellen Sie sicher, dass auf Port 1044 nichts anderes ausgeführt wird. Wenn Sie möchten Debuggen Sie vom Start der Ausführung an, ändern Sie suspend=n
in suspend=y
damit die JVM auf Ihren Debugger wartet, bevor sie den Server startet.
Es steht auch ein Python-Wrapper-Skript zur Verfügung, das den Start von eclipse.jdt.ls komfortabler macht (keine Notwendigkeit, mit Java-Optionen usw. zu jonglieren). Eine Beispielverwendung wird unten beschrieben. Das Skript erfordert Python 3.9.
./org.eclipse.jdt.ls.product/target/repository/bin/jdtls
-configuration ~ /.cache/jdtls
-data /path/to/data
Alle angezeigten Java-Optionen werden vom Wrapper-Skript festgelegt. Bitte beachten Sie, dass die -configuration
Optionen auf den Ordner eines Benutzers verweisen, um sicherzustellen, dass der Konfigurationsordner in org.eclipse.jdt.ls.product/target/repository/config_*
unberührt bleibt.
Siehe Mitwirken
Der Java-Sprachserver unterstützt Sockets, Named Pipes und Standard-Streams des Serverprozesses für die Kommunikation mit dem Client. Der Client kann seine bevorzugten Verbindungsmethoden mitteilen, indem er Umgebungsvariablen einrichtet oder alternativ Systemeigenschaften verwendet (z. B. -DCLIENT_PORT=...
).
Um einen einfachen Socket zu verwenden, legen Sie vor dem Starten des Servers die folgenden Umgebungsvariablen oder Systemeigenschaften fest:
CLIENT_PORT
: Der Port des Sockets, mit dem eine Verbindung hergestellt werden sollCLIENT_HOST
: Der Hostname, zu dem eine Verbindung hergestellt werden soll. Wenn nicht festgelegt, wird standardmäßig localhost
verwendet.Die Verbindung wird für den Ein- und Ausgang verwendet.
Um Standard-Streams (stdin, stdout) des Serverprozesses zu verwenden, legen Sie keine der oben genannten Umgebungsvariablen fest und der Server greift auf Standard-Streams zurück.
Bei Sockets und Named Pipes wird vom Client erwartet, dass er die Verbindungen herstellt und darauf wartet, dass der Server eine Verbindung herstellt.
Dieses Repository enthält nur die Serverimplementierung. Hier sind einige bekannte Clients, die diesen Server nutzen:
Unser CI-Server veröffentlicht die Server-Binärdateien unter http://download.eclipse.org/jdtls/snapshots/.
P2-Repositories sind unter http://download.eclipse.org/jdtls/snapshots/repository/ verfügbar.
Meilenstein-Builds sind unter http://download.eclipse.org/jdtls/milestones/ verfügbar.
EPL 2.0, siehe LICENSE-Datei.