Intelligente Lösungen
in neuer Dimension

VSCODE: Java-Entwicklung

Ich habe die letzten Wochen Experimente mit VSCODE (genauer: VSCODIUM) für die Java-Entwicklung vorgenommen. Grob habe ich:

  • VSCODIUM-1.51.1 installiert
  • die neuesten Spring-Tools eingespielt

Bei einem Spiel-Projekt hat “alles” wunderbar geklappt, bei meinen Arbeitsprojekten zunächst leider nicht!

VSCODE und SpringTools

Grundinstallation:

  • VSCODE öffnen
  • Extension-Liste öffnen
  • Suchfeld: “spring tools”
  • Spring Boot Tools 1.23.0 installieren (= neueste Version)

Konfiguration:

Beispiel-Java-Projekt

Ich verwende das Beispiel-Projekt von spring.io:

1
git clone https://github.com/spring-guides/gs-gradle.git

Das Beispiel-Java-Projekt liefert zwei Stände:

  • initial
  • complete

Danach: VSCODE neu starten und Projekt-Verzeichnis “initial” öffnen: vscodium gs-gradle/initial.

Leider “springt” bei mir hier die Java-Unterstützung nicht automatisch an. Die Java-Quelltexte werden zwar syntaktisch aufbereitet (also eingefärbt), leider werden aber JAava-Fehler nicht erkannt.

Also:

  • JDK-11 von AdoptOpenJDK herunterladen
  • und auspacken nach ~/Software
  • und Link anlegen: ln -s ~/Software/jdk-11.0.9+11 ~/Software/jdk-11

Danach: VSCODE neu starten mit JAVA_HOME und Projekt-Verzeichnis “initial” öffnen: JAVA_HOME=~/Software/jdk-11 vscodium gs-gradle/initial.

Beim Start von VSCODE wird nun angezeigt: “The workspace contains Java projects. Would you like to import them?” Wir wälen “YES”. Danach: “Do you like to exclude the VSCode Java project settings files (.classpath, .project, .settings, .factorypath) from the file explorer?” Wir wählen “EXCLUDE GLOBALLY”.

Java-Projekte

Grob sehen meine Java-Projekte so aus:

  • Gradle als Build-Tool
  • jeweils “Multi Projekt”, es gibt Teilprojekte wie

    • api … definiert die externe Schnittstelle
    • app … enthält den “eigentlichen” Programmcode
    • sit … enthält “System Intergation Tests”
    • etc
  • die Aufteilung in Teilprojekte ist eine Vorgabe für alle meine Arbeitsprojekte. Die Vorhabe kommt vom Auftraggeber

Ein so aufgebautes Java-Projekt kann ich in VSCODE einfach bearbeiten, indem ich den Projektordner in VSCODE öffne.

  • Unten rechts erscheint “Java” bei .java-Dateien
  • Daneben zunächst so eine Art “Eieruhr” während VSCODE die Abhängigkeiten herunterläadt und das Projekt kompiliert
  • Fehlerhafte Java-Dateien werden “rot”
  • Junit-Tests kann ich direkt innerhalb von VSCODE ausführen
  • Und vieles mehr!

Arbeitsprojekte

Bei einem “richtigen” Arbeitsprojekt stelle ich fest, dass die oben beschriebenen Java-Erweiterungen nicht aktiviert werden!

Um einen “frischen” Start hinzubekommen, habe ich mehrfach dies gemacht:

  • VSCODE gestoppt
  • Hintergrundprozess für den LanguageServer gestoppt: ps waux|grep java
  • Java-Projektverzeichnis aufgeräumt:

    • find . -name bin|xargs rm -rf
    • find . -name .classpath|xargs rm -rf
    • find . -name .project|xargs rm -rf
    • find . -name .settings|xargs rm -rf
    • find . -name .factorypath|xargs rm -rf
  • VSCODE neu starten

Leider kein Erfolg, die Java-Erweiterungen sind nicht aktiv.

Unterschiede zwischen dem Beispiel-Java-Projekt und meinen Arbeitsprojekten sind diese:

  • die Arbeitsprojekte bestehen auf mehreren Unterprojekten
  • die Arbeitsprojekte verwenden ein eigenes GRADLE_USER_HOME, weil sie ihre Dependencies bspw. nur bei Verwendung eines speziellen ProxyServera herunterladen können!

Also: GRADLE_USER_HOME setzen:

  • /home/uli/.config/VSCodium/User/settings.json
  • Neue Zeile: "java.import.gradle.user.home": "/home/uli/.gradle-business",

Danach: VSCODE neu starten, nun klappt “alles”.