Giter Club home page Giter Club logo

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 outline
  • Code navigation
  • Code lens (references)
  • Highlights
  • Code formatting
  • Maven pom.xml project support
  • Limited Gradle support (Android projects are not supported)

First Time Setup

  1. Fork and clone the repository

  2. Install Eclipse Neon Java EE that will have most needed already installed. Alternately, you can get the Eclipse IDE for Java developers and just instal Eclipse PDE from marketplace.

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

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

Building from command line

  1. Install Apache Maven

  2. This command will build the server into /org.eclipse.jdt.ls.product/target/repository folder:

    $ mvn 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 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.protocol=true -Dlog.level=ALL -noverify -Xmx1G -jar ./plugins/org.eclipse.equinox.launcher_1.4.0.v20161219-1356.jar -configuration ./config_linux -data /path/to/data
  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

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.

  • To use name pipes set the following environment variables before starting the server.
STDIN_PIPE_NAME --> where client reads from
STDOUT_PIPE_NAME --> where client writes to
  • To use plain sockets set the following environment variables before starting the server.
STDIN_PORT --> client reads
STDOUT_PORT --> client writes to

optionally you can set host values for socket connections

STDIN_HOST
STDOUT_HOST
  • 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 server the connect.

Feedback

Clients

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

Continuous Integration Builds

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

License

EPL 1.0, See LICENSE file.

Fred Bricon's Projects

Fred Bricon doesnโ€™t have any public repositories yet.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.