523 Stimmen

Wie sage ich Gradle, eine bestimmte JDK-Version zu verwenden?

Ich kann nicht herausfinden, wie ich das zum Laufen bringe.

Szenario:

  • Ich habe eine Anwendung mit Gradle erstellt
  • Die Anwendung verwendet JavaFX

Was ich möchte

  • Verwenden Sie eine Variable (die pro Entwickler-Maschine definiert ist), die auf eine Installation eines JDK zeigt, das für den Bau der gesamten Anwendung / Tests / ... verwendet wird

Ich habe daran gedacht, die gradle.properties-Datei zu haben, die die Variable definiert. Etwas in der Art von

JAVA_HOME_FOR_MY_PROJECT=

Was ich nicht möchte

  • Zeigen Sie JAVA_HOME auf das gewünschte JDK

Ich könnte mit vielen Vorschlägen leben:

  • eine Lösung, die eine Systemumgebungsvariable definiert, die ich in meinem build.gradle-Skript überprüfen kann
  • eine in gradle.properties definierte Variable
  • das Überschreiben der JAVA_HOME-Variable nur für den Build-Kontext (etwas wie use JAVA_HOME=)
  • etwas, an das ich nicht gedacht habe

Frage:

  • Wie verknüpfe ich eine Variable (wie auch immer definiert, als Variable in der gradle.properties-Datei, Systemumgebungsvariable, ...) mit dem Bauprozess?

Ich habe mehr als ein JDK7 verfügbar und muss auf eine spezielle Version (mindestens JDK_u-Version) verweisen.

Jede Antwort wird geschätzt und ich bin dankbar für jeden Hinweis in die richtige Richtung.

2voto

TacB0sS Punkte 9806

Also, ich benutze IntelliJ für mein Android-Projekt, und das folgende hat das Problem in der IDE gelöst:

Weil es jemandem die paar Stunden ersparen könnte, die ich verschwendet habe... IntelliJ -> Einstellungen -> Build, Ausführung, Bereitstellung -> Build-Tools -> Maven -> Gradle

und setze Gradle JVM auf 1.8 Stelle sicher, dass du auch JDK 8 installiert hast...

HINWEIS: Das Projekt wurde problemlos von der Befehlszeile kompiliert

2voto

JasonBodnar Punkte 135

Wenn Sie es nur einmal einstellen möchten, um einen bestimmten Befehl auszuführen:

JAVA_HOME=/usr/lib/jvm/java-11-oracle/ gw build

2voto

logbasex Punkte 1016

Es gibt einen ziemlich einfachen Weg. Sie können die folgende Lösung ausprobieren.

sudo update-alternatives --config java

Nachdem Sie Ihre Java-Version aktualisiert haben, überprüfen Sie die aktuelle JVM-Version von Gradle, um sicherzustellen, dass diese Änderung angewendet wurde.

gradle -v

Weitere Details finden Sie in Ihrer gradlew Datei (in Unix-ähnlichen Betriebssystemen) oder Ihrer gradlew.bat Datei (in Windows-Betriebssystemen), um zu sehen, wie Gradle die Variable JAVACMD konfiguriert.

Zum Beispiel

# Bestimmen Sie den Java-Befehl, um die JVM zu starten.
if [ -n "$JAVA_HOME" ] ; then
    if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
        # IBMs JDK auf AIX verwendet seltsame Orte für die Ausführbarkeit
        JAVACMD="$JAVA_HOME/jre/sh/java"
    else
        JAVACMD="$JAVA_HOME/bin/java"
    fi
    if [ ! -x "$JAVACMD" ] ; then
        die "FEHLER: JAVA_HOME ist auf ein ungültiges Verzeichnis gesetzt: $JAVA_HOME

Bitte setzen Sie die JAVA_HOME-Variable in Ihrer Umgebung auf den
Speicherort Ihrer Java-Installation."
    fi
else
    JAVACMD="java"
    which java >/dev/null 2>&1 || die "FEHLER: JAVA_HOME ist nicht gesetzt und kein 'java'-Befehl konnte in Ihrem PATH gefunden werden.

Bitte setzen Sie die JAVA_HOME-Variable in Ihrer Umgebung auf den
Speicherort Ihrer Java-Installation."
fi

2voto

Paul Verest Punkte 55549

Wie bereits in Gradle (Eclipse-Plugin) zu sehen

http://www.gradle.org/get-started

Gradle verwendet das JDK, das es im Pfad findet (um zu überprüfen, verwenden Sie java -version). Alternativ können Sie die Umgebungsvariable JAVA_HOME auf das Installationsverzeichnis des gewünschten JDK setzen.


Wenn Sie dieses Eclipse-Plugin oder Enide Studio 2014 verwenden, wird in der Version 0.15 ein alternativer JAVA_HOME (in den Einstellungen festgelegt) verwendet, siehe http://www.nodeclipse.org/history

1voto

sobczak.dev Punkte 993

Wenn Sie Kotlin DSL verwenden, fügen Sie in build.gradle.kts Folgendes hinzu:

tasks.withType {
    options.isFork = true
    options.forkOptions.javaHome = File("C:\\bin\\jdk-13.0.1\\")
}

Natürlich gehe ich davon aus, dass Sie Windows OS haben und der javac-Compiler im Pfad C:\bin\jdk-13.0.1\bin\javac liegt. Für Linux OS gilt Ähnliches.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X