All Projects → eclipse → Eclipse.jdt.ls

eclipse / Eclipse.jdt.ls

Licence: epl-2.0
Java language server

Programming Languages

java
68154 projects - #9 most used programming language

Projects that are alternatives of or similar to Eclipse.jdt.ls

Lsp4j
A Java implementation of the language server protocol intended to be consumed by tools and language servers implemented in Java.
Stars: ✭ 293 (-67%)
Mutual labels:  eclipse, language-server-protocol
lxtk
Language Client/Server Toolkit
Stars: ✭ 22 (-97.52%)
Mutual labels:  eclipse, language-server-protocol
Openexplorer
Open Explorer plugin for Eclipse
Stars: ✭ 404 (-54.5%)
Mutual labels:  eclipse
Pylance Release
Documentation and issues for Pylance
Stars: ✭ 782 (-11.94%)
Mutual labels:  language-server-protocol
Mcuoneclipse
McuOnEclipse Processor Expert components and example projects
Stars: ✭ 513 (-42.23%)
Mutual labels:  eclipse
Intellij Plugin Save Actions
Supports configurable, Eclipse like, save actions, including "organize imports", "reformat code" and "rearrange code".
Stars: ✭ 440 (-50.45%)
Mutual labels:  eclipse
Groovy Eclipse
Eclipse Groovy Development Tools
Stars: ✭ 567 (-36.15%)
Mutual labels:  eclipse
Powershelleditorservices
A common platform for PowerShell development support in any editor or application!
Stars: ✭ 394 (-55.63%)
Mutual labels:  language-server-protocol
Naive Bayes Classifier
Naive Bayes classifier is classification algorithm. It uses Naive based Bernoulli and Multinomial equation to classify documents(Text) as ham or spam.
Stars: ✭ 6 (-99.32%)
Mutual labels:  eclipse
Seckill
一个整合SSM框架的高并发和商品秒杀项目,学习目前较流行的Java框架组合实现高并发秒杀API
Stars: ✭ 513 (-42.23%)
Mutual labels:  eclipse
Python Language Server
Microsoft Language Server for Python
Stars: ✭ 778 (-12.39%)
Mutual labels:  language-server-protocol
Eclipse Plugins
The Eclipse Embedded CDT plug-ins for Arm & RISC-V C/C++ developers (formerly known as the GNU MCU Eclipse plug-ins). Includes the archive of previous plug-ins versions, as Releases.
Stars: ✭ 507 (-42.91%)
Mutual labels:  eclipse
Bnd
Bnd/Bndtools. Tooling to build OSGi bundles including Eclipse, Maven, and Gradle plugins.
Stars: ✭ 446 (-49.77%)
Mutual labels:  eclipse
Elixir Ls
A frontend-independent IDE "smartness" server for Elixir. Implements the "Language Server Protocol" standard and provides debugger support via the "Debug Adapter Protocol"
Stars: ✭ 587 (-33.9%)
Mutual labels:  language-server-protocol
Monaco Languageclient
NPM module to connect Monaco editor with language servers
Stars: ✭ 419 (-52.82%)
Mutual labels:  language-server-protocol
Che
The Kubernetes-Native IDE for Developer Teams
Stars: ✭ 6,572 (+640.09%)
Mutual labels:  eclipse
Jeesns
JEESNS是一款基于JAVA企业级平台研发的社交管理系统,依托企业级JAVA的高效、安全、稳定等优势,开创国内JAVA版开源SNS先河。交流QQ群:280062708。
Stars: ✭ 405 (-54.39%)
Mutual labels:  eclipse
Sts4
The next generation of tooling for Spring Boot, including support for Cloud Foundry manifest files, Concourse CI pipeline definitions, BOSH deployment manifests, and more... - Available for Eclipse, Visual Studio Code, and Theia
Stars: ✭ 490 (-44.82%)
Mutual labels:  eclipse
Vim Lsc
A vim plugin for communicating with a language server
Stars: ✭ 545 (-38.63%)
Mutual labels:  language-server-protocol
Goclipse
Eclipse IDE for the Go programming language:
Stars: ✭ 832 (-6.31%)
Mutual labels:  eclipse

Build Status

Eclipse JDT Language Server

The Eclipse JDT Language Server is a Java language specific implementation of the Language Server Protocol and can be used with any editor that supports the protocol, to offer good support for the Java Language. The server is based on:

  • Eclipse LSP4J, the Java binding for the Language Server Protocol,
  • Eclipse JDT, which provides Java support (code completion, references, diagnostics...),
  • M2Eclipse, which provides Maven support,
  • Buildship, which provides Gradle support.

Features

  • As you type reporting of parsing and compilation errors
  • Code completion
  • Javadoc hovers
  • Code actions / refactoring
  • Code outline
  • Code navigation
  • Code lens (references/implementations)
  • Highlights
  • Organize imports
  • Type search
  • Code formatting (on-type/selection/file)
  • Maven pom.xml project support
  • Supports compiling projects from Java 1.5 through 15
  • Limited Gradle support (Android projects are not supported)
  • Annotation processing support (automatic for Maven projects)
  • Extensibility

First Time Setup

Pre-requisite: Java 11 must be installed on your machine and configured in Eclipse.

  1. Fork and clone the repository

  2. Install Eclipse IDE for Eclipse Committers that will have the most needed plugins already installed. Alternatively, you can get the Eclipse IDE for Java developers and just install Eclipse PDE from the Eclipse Marketplace.

  3. Once installed use File > Open Projects from File System... and point it at eclipse.jdt.ls and Eclipse should automatically detect the projects and import it properly.

  4. If, after importing the projects, you see an error on pom.xml about Tycho, you can use Quick Fix (Ctrl+1) to install the Tycho maven integration.

  5. At that point, some plug-ins should still be missing in order to build the project. You can either open org.eclipse.jdt.ls.target/org.eclipse.jdt.ls.tp.target in the Target Editor (which is the default editor) and click on Set Target Platform, or alternatively, open Preferences > Plug-in Development > Target Platform and select Java Language Server Target Definition). Eclipse will take some time to download all the required dependencies. It should then be able to compile all the projects in the workspace.

Building from the command line

Pre-requisite: Java 11 must be installed on your machine and accessible in the PATH.

The following command will install Apache Maven if necessary, then build the server into the /org.eclipse.jdt.ls.product/target/repository folder:

    $ ./mvnw clean verify

Running from the command line

  1. Choose a connection type from "Managing connection types" section below, and then set those environment variables in your terminal or specify them as system properties with -D prior to continuing

  2. Make sure to build the server using the steps above in the "Building from command line" section

  3. cd into the build directory of the project: /org.eclipse.jdt.ls.product/target/repository

  4. Prior to starting the server, make sure that your socket (TCP or sock file) server is running for both the IN and OUT sockets. You will get an error if the JDT server cannot connect on your ports/files specified in the environment variables

  5. To start the server in the active terminal, run:

java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=1044 -Declipse.application=org.eclipse.jdt.ls.core.id1 -Dosgi.bundles.defaultStartLevel=4 -Declipse.product=org.eclipse.jdt.ls.core.product -Dlog.level=ALL -noverify -Xmx1G -jar ./plugins/org.eclipse.equinox.launcher_1.5.200.v20180922-1751.jar -configuration ./config_linux -data /path/to/data --add-modules=ALL-SYSTEM --add-opens java.base/java.util=ALL-UNNAMED --add-opens java.base/java.lang=ALL-UNNAMED
  1. Choosing a value for -configuration: this is the path to your platform's configuration directory. For linux, use ./config_linux. For windows, use ./config_win. For mac/OS X, use ./config_mac.

  2. Choosing a value for -data: the value for your data directory, should be the directory where your active workspace is, and you wish for the java langserver to add in its default files. Should also be the absolute path to this directory, ie., /home/username/workspace

  3. Notes about debugging: the -agentlib: is for connecting a java debugger agent to the process, and if you wish to debug the server from the start of execution, set suspend=y so that the JVM will wait for your debugger prior to starting the server

  4. Notes on jar versions: the full name of the build jar file above, org.eclipse.equinox.launcher_1.4.0.v20161219-1356.jar, may change incrementally as the project version changes. If java complains about jar not found, then look for the latest version of the org.eclipse.equinox.launcher_* jar in the /org.eclipse.jdt.ls.product/target/repository/plugins directory and replace it in the command after the -jar

Managing connection types

The Java Language server supports sockets, named pipes, and standard streams of the server process to communicate with the client. Client can communicate its preferred connection methods by setting up environment variables or alternatively using system properties (e.g. -DCLIENT_PORT=...)

  • To use a plain socket, set the following environment variables or system properties before starting the server:

    • CLIENT_PORT: the port of the socket to connect to
    • CLIENT_HOST: the host name to connect to. If not set, defaults to localhost.

    The connection will be used for in and output.

  • To use standard streams(stdin, stdout) of the server process do not set any of the above environment variables and the server will fall back to standard streams.

For socket and named pipes, the client is expected to create the connections and wait for the server to connect.

Feedback

Clients

This repository only contains the server implementation. Here are some known clients consuming this server:

  • vscode-java : an extension for Visual Studio Code
  • ide-java : an extension for Atom
  • ycmd : a code-completion and code-comprehension server for multiple clients
  • Oni : modern modal editing - powered by Neovim.
  • LSP Java : a Java LSP client for Emacs
  • Eclipse Theia : Theia is a cloud & desktop IDE framework implemented in TypeScript
  • coc-java : an extension for coc.nvim
  • MS Paint IDE : an IDE for programming in MS Paint
  • nvim-jdtls : an extension for Neovim

Continuous Integration Builds

Our CI server publishes the server binaries to http://download.eclipse.org/jdtls/snapshots/.

P2 repositories are available under http://download.eclipse.org/jdtls/snapshots/repository/.

Milestone builds are available under http://download.eclipse.org/jdtls/milestones/.

License

EPL 2.0, See LICENSE file.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].