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.

1voto

Braian Coronel Punkte 19992

Android Studio

Datei > Projektstruktur > SDK-Standort > JDK-Standort >

/usr/lib/jvm/java-8-openjdk-amd64

GL

JDK installieren

0voto

Do Nhu Vy Punkte 38281

Ich verwende Gradle 4.2. Die Standard-JDK ist Java 9. In den frühen Tagen von Java 9 lief Gradle 4.2 unter JDK 8 korrekt (nicht unter JDK 9).

Ich habe das JDK manuell wie folgt festgelegt, in der Datei %GRADLE_HOME%\bin\gradle.bat:

@if "%DEBUG%" == "" @echo off
@rem ##########################################################################
@rem
@rem  Gradle-Startskript für Windows
@rem
@rem ##########################################################################

@rem Lokalen Bereich für die Variablen mit Windows NT-Shell festlegen
if "%OS%"=="Windows_NT" setlocal

set DIRNAME=%~dp0
if "%DIRNAME%" == "" set DIRNAME=.
set APP_BASE_NAME=%~n0
set APP_HOME=%DIRNAME%..

@rem Standard-JVM-Optionen hier hinzufügen. Sie können auch JAVA_OPTS und GRADLE_OPTS verwenden, um JVM-Optionen an dieses Skript zu übergeben.
set DEFAULT_JVM_OPTS=

@rem java.exe finden
if defined JAVA_HOME goto findJavaFromJavaHome

@rem VyDN-Start.
set JAVA_HOME=C:\Program Files\Java\jdk1.8.0_144\
@rem VyDN-Ende.

set JAVA_EXE=java.exe
%JAVA_EXE% -version >NUL 2>&1
if "%ERRORLEVEL%" == "0" goto init

echo.
echo FEHLER: JAVA_HOME ist nicht festgelegt und es konnte kein 'java'-Befehl in Ihrem PATH gefunden werden.
echo.
echo Legen Sie bitte die JAVA_HOME-Variable in Ihrer Umgebung fest, um den
echo Speicherort Ihrer Java-Installation anzupassen.

goto fail

:findJavaFromJavaHome
set JAVA_HOME=%JAVA_HOME:"=%

@rem VyDN-Start.
set JAVA_HOME=C:\Program Files\Java\jdk1.8.0_144\
@rem VyDN-Ende.

set JAVA_EXE=%JAVA_HOME%/bin/java.exe

if exist "%JAVA_EXE%" goto init

echo.
echo FEHLER: JAVA_HOME ist auf ein ungültiges Verzeichnis festgelegt: %JAVA_HOME%
echo.
echo Legen Sie bitte die JAVA_HOME-Variable in Ihrer Umgebung fest, um den
echo Speicherort Ihrer Java-Installation anzupassen.

goto fail

:init
@rem Befehlszeilenargumente abrufen und Windows-Varianten behandeln

if not "%OS%" == "Windows_NT" goto win9xME_args

:win9xME_args
@rem Befehlszeilenargumente aufnehmen.
set CMD_LINE_ARGS=
set _SKIP=2

:win9xME_args_slurp
if "x%~1" == "x" goto execute

set CMD_LINE_ARGS=%*

:execute
@rem Befehlszeile einrichten

set CLASSPATH=%APP_HOME%\lib\gradle-launcher-4.2.jar

@rem Gradle ausführen
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.launcher.GradleMain %CMD_LINE_ARGS%

:end
@rem Lokalen Bereich für die Variablen mit Windows NT-Shell beenden
if "%ERRORLEVEL%"=="0" goto mainEnd

:fail
rem Legen Sie die Variable GRADLE_EXIT_CONSOLE fest, wenn Sie den Rücksprungcode des Skripts anstelle des
rem Rückgabecodes von _cmd.exe /c_ benötigen!
if  not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
exit /b 1

:mainEnd
if "%OS%"=="Windows_NT" endlocal

:omega

0voto

IamDOM Punkte 245

Dank dieser Antwort konnte ich feststellen, dass mein Problem darin bestand, dass Gradle das falsche JDK auswählte, selbst wenn JAVA_HOME korrekt gesetzt war.

Mein ursprünglicher Kommentar:

Mein Betriebssystem ist Linux und mein JAVA_HOME zeigt auf den richtigen Pfad. Ich habe sogar diesen Befehl verwendet: gradle build -Dorg.gradle.java.home=$JAVA_HOME, um meinen Standpunkt zu beweisen. Ich habe Gradle mit Snap in Ubuntu installiert und vermute, dass es ein gebündeltes JDK verwendet.

Meine Lösung:

Ich habe Gradle mit Snap entfernt und dann manuell installiert, indem ich ihre Binärdateien heruntergeladen und sie in den PATH gelegt habe.

Meine Schlussfolgerung ist, dass die Gradle Snap-Installation auf Ubuntu mit einem älteren JDK gebündelt kommt.

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