Code Java von Emacs mit Eclim

Die Java-Entwicklung verwendet lokale IDEs wie IntelliJ IDEA und Eclipse für Windows und macOS, aber ich denke, dass viele Leute Vim- und Emacs-Editoren für die Entwicklung von Skriptsprachen wie Node.js und Python verwenden. Mit Eclim kann Java auch im Editor entwickelt werden. Wenn Sie eine Entwicklungsumgebung auf einer virtuellen Maschine in der Cloud erstellen, können Sie dieselbe Entwicklung jederzeit per SSH-Verbindung vom Terminal aus durchführen, ohne von den lokalen Einstellungen abhängig zu sein.

Virtuelle Maschine

Bereiten Sie eine virtuelle Maschine in der Cloud vor. Dieses Mal werden wir eine Java-Entwicklungsumgebung unter Ubuntu 16.04 LTS (Xenial Xerus) erstellen.

$ cat /etc/os-release
NAME="Ubuntu"
VERSION="16.04.3 LTS (Xenial Xerus)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 16.04.3 LTS"
VERSION_ID="16.04"
HOME_URL="http://www.ubuntu.com/"
SUPPORT_URL="http://help.ubuntu.com/"
BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/"
VERSION_CODENAME=xenial
UBUNTU_CODENAME=xenial

Aktualisieren Sie das Paket.

$ sudo apt-get update && sudo apt-get dist-upgrade -y

Java

Installieren Sie das Java 8 SDK. Es muss nicht OpenJDK sein.

$ sudo apt-get install openjdk-8-jdk -y
$ java -version
openjdk version "1.8.0_131"
OpenJDK Runtime Environment (build 1.8.0_131-8u131-b11-2ubuntu1.16.04.3-b11)
OpenJDK 64-Bit Server VM (build 25.131-b11, mixed mode)

Eclipse Oxygen

Eclim stellt eine Verbindung zu Eclipse her und ermöglicht es Ihnen, einige Funktionen von Eclipse im Editor zu verwenden. Download Eclipse Oxygen (4.7), veröffentlicht im Juni 2017.

$ wget http://ftp.yz.yamagata-u.ac.jp/pub/eclipse/technology/epp/downloads/release/oxygen/R/eclipse-java-oxygen-R-linux-gtk-x86_64.tar.gz
$ tar zxvf eclipse-java-oxygen-R-linux-gtk-x86_64.tar.gz
$ sudo mv eclipse /opt/

Emacs

Installieren Sie Emacs24.

$ sudo apt-get install emacs24-nox emacs24-el -y
$ emacs --version
GNU Emacs 24.5.1

Cask

Dies ist Cask für die Emacs-Paketverwaltung. Git und Python werden für die Installation benötigt.

$ sudo apt-get install git python -y
$ curl -fsSL https://raw.githubusercontent.com/cask/cask/master/go | python
$ echo 'export PATH="$HOME/.cask/bin:$PATH"' >> ~/.bashrc
$ source ~/.bashrc

Bereiten Sie die folgende Einstellungsdatei im Verzeichnis ~ / .emacs.d vor.

$ tree ~/.emacs.d
.emacs.d.bak/
├── Cask
├── init.el
└── inits
    ├── 00-keybindings.el
    ├── 01-menu.el
    ├── 02-files.el
    └── 08-eclim.el

init.el verwendet init-loader, um die Datei zu teilen. Bitte verwenden Sie nach Belieben andere als "~ / .emacs.d / inits / 08-eclim.el".

~/.emacs.d/init.el


(require 'cask "~/.cask/cask.el")
(cask-initialize)

(require 'init-loader)
(setq init-loader-show-log-after-init nil)
(init-loader-load "~/.emacs.d/inits")

Beschreibt das in Cask zu installierende Paket. Eclim und company-emacs-eclim für die Java-Entwicklung /company-emacs-eclim.el) ist installiert.

el:~/.emacs.d/Cask


(source gnu)
(source melpa)

(depends-on "cask")
(depends-on "init-loader")

;; java
(depends-on "eclim")
(depends-on "company-emacs-eclim")

Die Eclim-Einstellungen folgen README. Verwenden Sie Unternehmensmodus für Popup-Dialoge und Code-Vervollständigung.

~/.emacs.d/inits/08-eclim.el


(require 'eclim)

;; enable eclim-mode globally
(setq eclimd-autostart t)
(global-eclim-mode)

;; Eclipse installation
(custom-set-variables
  '(eclim-eclipse-dirs '("/opt/eclipse/eclipse"))
  '(eclim-executable "/opt/eclipse/eclim"))

;; Displaying compilation error messages in the echo area
(setq help-at-pt-display-when-idle t)
(setq help-at-pt-timer-delay 0.1)
(help-at-pt-set-timer)

;; Configuring company-mode
(require 'company)
(require 'company-emacs-eclim)
(company-emacs-eclim-setup)
(global-company-mode t)

Die folgenden Einstellungen sind nicht erforderlich, werden jedoch häufig in Emacs verwendet. Ändern Sie die Rücktaste mit "C-h".

~/.emacs.d/inits/00-keybindings.el


(define-key global-map "\C-h" 'delete-backward-char)
(define-key global-map "\M-?" 'help-for-help)

Blenden Sie das Emacs-Menü aus.

~/.emacs.d/inits/01-menu.el


(menu-bar-mode 0)

Löschen Sie Leerzeichen am Zeilenende, erstellen Sie keine Sicherungen, Registerkarteneinstellungen usw.

~/.emacs.d/inits/02-files.el


(when (boundp 'show-trailing-whitespace)
      (setq-default show-trailing-whitespace t))

(add-hook 'before-save-hook 'delete-trailing-whitespace)

(setq backup-inhibited t)
(setq next-line-add-newlines nil)
(setq-default tab-width 4 indent-tabs-mode nil)

(setq default-major-mode 'text-mode)

Führen Sie abschließend den Befehl cask aus, um das Paket zu installieren.

$ cd ~/.emacs.d
$ cask install

Eclim

Virtueller Frame-Puffer Xvfb für die kopflose Verwendung von Eclipse, für die ein X-Server erforderlich ist, wie unter Installation auf einem kopflosen Server beschrieben. Installieren Sie (: //www.x.org/releases/X11R7.7/doc/man/man1/Xvfb.1.xhtml).

$ sudo apt-get install xvfb build-essential -y

Wechseln Sie in das Eclipse-Verzeichnis und installieren Sie Eclim.

$ cd /opt/eclipse
$ wget https://github.com/ervandew/eclim/releases/download/2.7.0/eclim_2.7.0.jar
$ java -Dvim.files=$HOME/.vim -Declipse.home="/opt/eclipse" -jar eclim_2.7.0.jar install

Starten Sie Xvfb und eclimd.

$ Xvfb :1 -screen 0 1024x768x24 &
$ DISPLAY=:1 /opt/eclipse/eclimd -b

Beispielprojekt

Erstellen Sie ein Beispielprojekt aus dem Archetyp maven-archetype-quickstart und überprüfen Sie die Funktion von Eclim. Installieren Sie zunächst Maven von SDKMAN!.

$ curl -s get.sdkman.io | /bin/bash
$ source ~/.sdkman/bin/sdkman-init.sh
$ sdk install maven
...
Setting maven 3.5.0 as default.

Führen Sie "mvn archetype: generate" in einem Verzeichnis Ihrer Wahl aus. Die Eclipse-Konfigurationsdatei wird auch mit "mvn eclipse: eclipse" erstellt.

$ mkdir ~/java_apps && cd ~/java_apps
$ mvn archetype:generate \
  -DarchetypeArtifactId=maven-archetype-quickstart \
  -DinteractiveMode=false \
  -DgroupId=com.example \
  -DartifactId=spike
$ cd spike
$ mvn eclipse:eclipse

Starten Sie Emacs.

$ emacs

Importieren Sie das aus dem Archetyp generierte Projekt in Eclipse.

M-x eclim-project-import

Sie werden im Minibuffer nach dem Projektverzeichnis gefragt. Geben Sie daher das Projektverzeichnis an.

Project Directory: ~/java_apps/spike/

Datum zu "Hallo Welt!" Hinzugefügt.

~/java_apps/spike/src/main/java/com/example/App.java


package com.example;
import java.util.Date;

/**
 * Hello world!
 *
 */
public class App
{
    public static void main( String[] args )
    {
        Date date = new Date();
        System.out.println( "Hello World!: " + date.getMinutes());
    }
}

Wenn Sie "date.get" eingeben, werden die Kandidaten im Popup- und Minipuffer angezeigt. Wählen Sie mit dem Cursor "Minuten abrufen" und drücken Sie die Eingabetaste.

eclim.png

Wenn ich die Datei mit "C-x C-s" speichere, erhalte ich "Eclim meldet 0 Fehler, 1 Warnungen". Im Minibuffer wird eine Fehlermeldung angezeigt, wenn "getMinutes" unterstrichen und der Cursor dorthin bewegt wird. Da es Hallo Welt ist, werde ich es hier ignorieren.

eclim2.png

Wenn Sie die Java-Datei mit der Hauptmethode im Puffer anzeigen und "eclim-run-class" ausführen, werden die Kompilierung und die Hauptmethode ausgeführt.

M-x eclim-run-class
eclim3.png

Recommended Posts

Code Java von Emacs mit Eclim
Führen Sie Java-Code von cpp auf cocos2dx aus
Erstellen Sie Java mit Mac vs Code
Führen Sie gepackten Java-Code mit Befehlen aus
Arbeiten Sie mit Google-Tabellen aus Java
Beispielcode mit Minio aus Java
Was ich aus Java gelernt habe, funktioniert mit Visual Studio Code
Bereiten Sie die Java-Entwicklungsumgebung mit VS Code vor
Rufen Sie die Java-Bibliothek von C mit JNI auf
API-Integration von Java mit Jersey Client
Verknüpfen Sie Java- und C ++ - Code mit SWIG
Einführung in Java ab 0 Teil 1
[JaCoCo (Java Code Coverage)] Verwendung mit NetBeans
[Java] Fluss vom Quellcode zur Ausführung
Führen Sie Java-Code skriptweise aus
Java-Code-TIPPS
Java-Beispielcode 02
Java-Beispielcode 03
Java-Beispielcode 04
Java-Beispielcode 01
Java-Zeichencode
Generieren Sie den Quellcode aus der JAR-Datei mit der JD-GUI des Java Decompiler-Projekts
Führen Sie eine statische Code-Analyse mit Checkstyle mit Java + Gradle durch
[Java] Stellen Sie die Zeit im Browser mit jsoup ein
[Android] Mit zxing aus dem QR-Code-Bild lesen
Textextraktion in Java aus PDF mit pdfbox-2.0.8
Komfortablere Java-Codeabdeckung mit Jacoco 0.8.0
Verwenden Sie Matplotlib aus Java oder Scala mit Matplotlib4j
Erstellen Sie mit Gradle mit VSCode Java → Ausführen
Bereinigen Sie findViewById aus dem Quellcode mit DataBindingLibrary
Versuchen Sie, ein Java-Programm mit VS-Code zu debuggen
Erstellen Sie eine Java-Entwicklungsumgebung mit VS Code
Rufen Sie Java von JRuby aus auf
Erstellen Sie eine Java-Entwicklungsumgebung mit VS Code auf dem Mac
Erste Schritte mit Java-Programmen mit Visual Studio Code
Erstellen Sie die VS Code + WSL + Java + Gradle-Umgebung von Grund auf neu
Lombok mit VS Code
Änderungen von Java 8 zu Java 11
Summe von Java_1 bis 100
Wechseln Sie die Plätze mit Java
Installieren Sie Java mit Ansible
Eval Java-Quelle von Java
Rufen Sie eine Methode mit Kotlins Rückrufblock von Java aus auf
Bequemer Download mit JAVA
Warum können Sie Java mit Visual Studio Code entwickeln?
Greifen Sie über Java auf API.AI zu
Schalten Sie Java mit direnv
Ich habe versucht, nativen Java / Objective-C-Code von Flutter aus aufzurufen
Von Java zu Ruby !!
[Hinweis] Erstellen Sie mit Docker eine Java-Umgebung von Grund auf neu
Java-Download mit Ansible
So erstellen Sie eine Java-Entwicklungsumgebung mit VS Code
Lass uns mit Java kratzen! !!
Lesen Sie Temperatur / Luftfeuchtigkeit von Raspberry Pi 3 & DHT11 mit Java ab
Erstellen Sie Java mit Wercker
Erstellen Sie eine Java-Programmentwicklungsumgebung mit Visual Studio Code
Endian-Konvertierung mit JAVA
So kehren Sie die Kompilierung der Apk-Datei in Java-Quellcode mit MAC um