Coder Java depuis Emacs avec Eclim

Le développement Java utilise des IDE locaux tels que IntelliJ IDEA et Eclipse pour Windows et macOS, mais je pense que de nombreuses personnes utilisent les éditeurs Vim et Emacs pour le développement de langage de script tels que Node.js et Python. Avec Eclim, Java peut également être développé à partir de l'éditeur. Si vous créez un environnement de développement sur une machine virtuelle dans le cloud, vous pouvez effectuer le même développement à tout moment par connexion SSH à partir du terminal sans dépendre des paramètres locaux.

Machine virtuelle

Préparez une machine virtuelle dans le cloud. Cette fois, nous allons construire un environnement de développement Java sur Ubuntu 16.04 LTS (Xenial Xerus).

$ 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

Mettez à jour le package.

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

Java

Installez le SDK Java 8. Il n'est pas nécessaire que ce soit OpenJDK.

$ 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 se connecte à Eclipse et vous permet d'utiliser certaines fonctionnalités d'Eclipse depuis l'éditeur. Téléchargez Eclipse Oxygen (4.7) sorti en juin 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

Installez Emacs24.

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

Cask

C'est Cask pour la gestion des paquets Emacs. Git et Python sont requis pour l'installation.

$ 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

Préparez le fichier de configuration suivant dans le répertoire ~ / .emacs.d.

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

ʻInit.elutilise [init-loader](https://github.com/emacs-jp/init-loader) pour diviser le fichier. Veuillez utiliser autre que~ / .emacs.d / inits / 08-eclim.el` comme vous le souhaitez.

~/.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")

Décrit le package à installer dans Cask. Eclim et company-emacs-eclim pour le développement Java /company-emacs-eclim.el) est installé.

el:~/.emacs.d/Cask


(source gnu)
(source melpa)

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

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

Les paramètres Eclim suivent README. Utilisez company-mode pour les boîtes de dialogue contextuelles et la complétion de code.

~/.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)

Les éléments suivants ne sont pas obligatoires, mais sont des paramètres couramment utilisés dans Emacs. Modifiez la liaison de la touche de retour arrière avec 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)

Cachez le menu Emacs.

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


(menu-bar-mode 0)

Supprimez les blancs à la fin des lignes, ne faites pas de sauvegardes, de paramètres d'onglet, etc.

~/.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)

Enfin, exécutez la commande cask pour installer le paquet.

$ cd ~/.emacs.d
$ cask install

Eclim

Tampon de trame virtuel Xvfb pour une utilisation sans tête d'Eclipse, qui nécessite un serveur X, comme décrit dans Installation sur un serveur sans tête Installez (: //www.x.org/releases/X11R7.7/doc/man/man1/Xvfb.1.xhtml).

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

Accédez au répertoire Eclipse et installez 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

Démarrez Xvfb et eclimd.

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

Exemple de projet

Créez un exemple de projet à partir de l'archétype de maven-archetype-quickstart et vérifiez le fonctionnement d'Eclim. Tout d'abord, installez Maven depuis SDKMAN!.

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

Exécutez mvn archetype: generate dans un répertoire de votre choix. Le fichier de configuration Eclipse est également créé avec mvn eclipse: eclipse.

$ 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

Démarrez Emacs.

$ emacs

Importez le projet généré à partir de l'archétype dans Eclipse.

M-x eclim-project-import

Il vous sera demandé le répertoire du projet dans le mini-tampon, spécifiez donc le répertoire du projet.

Project Directory: ~/java_apps/spike/

Date ajoutée à "Hello world!".

~/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());
    }
}

Si vous entrez date.get, les candidats seront affichés dans le pop-up et le mini-tampon. Sélectionnez get Minutes avec le curseur et appuyez sur Entrée.

eclim.png

Lorsque j'enregistre le fichier avec C-x C-s, ʻEclim signale 0 erreur, 1 avertissement .s'affiche. SigetMinutes` est souligné et que vous y déplacez le curseur, vous obtiendrez un message d'erreur dans le mini-tampon. Puisque c'est Hello world, je vais l'ignorer ici.

eclim2.png

Si vous affichez le fichier Java avec la méthode main dans le tampon et exécutez ʻeclim-run-class`, la compilation et la méthode main s'exécuteront.

M-x eclim-run-class
eclim3.png

Recommended Posts

Coder Java depuis Emacs avec Eclim
Exécutez du code Java à partir de cpp sur cocos2dx
Construire Java avec Mac vs Code
Exécuter du code Java packagé avec des commandes
Travailler avec des feuilles de calcul Google à partir de Java
Exemple de code utilisant Minio de Java
Ce que j'ai appris en travaillant Java avec Visual Studio Code
Préparer l'environnement de développement Java avec VS Code
Appeler la bibliothèque Java à partir de C avec JNI
Intégration API de Java avec Jersey Client
Lier le code Java et C ++ avec SWIG
Introduction à Java à partir de 0 Partie 1
[JaCoCo (Java Code Coverage)] Utilisation avec NetBeans
[Java] Flux du code source à l'exécution
Exécuter du code Java de manière scriptée
CONSEILS relatifs au code Java
Exemple de code Java 02
Exemple de code Java 03
Exemple de code Java 04
Exemple de code Java 01
Code de caractère Java
Générer le code source à partir du fichier JAR avec JD-GUI du projet Java Decompiler
Analyse de code statique par Checkstyle avec Java + Gradle
[Java] Réglez l'heure depuis le navigateur avec jsoup
[Android] Lire à partir de l'image du code QR avec zxing
Extraction de texte en Java à partir de PDF avec pdfbox-2.0.8
Couverture de code Java plus confortable avec Jacoco 0.8.0
Utilisez Matplotlib depuis Java ou Scala avec Matplotlib4j
En utilisant Gradle avec VSCode, compilez Java → exécutez
Nettoyer findViewById du code source avec DataBindingLibrary
Essayez de déboguer un programme Java avec VS Code
Créer un environnement de développement Java avec VS Code
Appeler Java depuis JRuby
Créer un environnement de développement Java avec VS Code sur Mac
Prise en main des programmes Java à l'aide de Visual Studio Code
Créer un environnement VS Code + WSL + Java + Gradle à partir de zéro
Lombok avec VS Code
Changements de Java 8 à Java 11
Somme de Java_1 à 100
Changer de siège avec Java
Installez Java avec Ansible
Évaluer la source Java à partir de Java
Appeler une méthode avec le bloc de rappel de Kotlin depuis Java
Téléchargement confortable avec JAVA
Pourquoi pouvez-vous développer Java avec Visual Studio Code?
Accédez à API.AI depuis Java
Changer java avec direnv
J'ai essayé d'appeler du code natif Java / Objective-C depuis Flutter
De Java à Ruby !!
[Note] Créez un environnement Java à partir de zéro avec docker
Téléchargement Java avec Ansible
Comment créer un environnement de développement Java avec VS Code
Raclons avec Java! !!
Lire la température / l'humidité avec Java de Raspberry Pi 3 & DHT11
Construire Java avec Wercker
Créer un environnement de développement de programme Java avec Visual Studio Code
Conversion Endian avec JAVA
Comment inverser la compilation du fichier apk en code source Java avec MAC