我不知道怎么把它修好。

场景:

我有一个用gradle构建的应用程序 应用程序使用JavaFX

我想要什么

使用一个变量(每个开发人员机器定义),该变量指向JDK的安装,将用于构建整个应用程序/测试/…

我想过要有gradle。属性文件,定义变量。类似的

JAVA_HOME_FOR_MY_PROJECT=<path to my desired JDK>

我不想要什么

将JAVA_HOME指向所需的JDK

我可以接受很多建议:

一个解决方案,它定义了一个系统环境变量,我可以在我的构建中检查。gradle脚本 在gradle.properties中定义的变量 仅为构建上下文重写JAVA_HOME变量(例如使用JAVA_HOME=<我在其他地方定义的特殊JDK路径定义>) 还有一件我没有想到的事

问题:

如何连接一个变量(如何定义,作为变量在gradle。属性,系统环境变量,…)到构建过程?

我有多个可用的JDK7,需要指向一个特殊版本(最小JDK_u版本)。

任何答案我都很感激,我很感激每一个指向正确方向的提示。


当前回答

还有一个选择。在Eclipse中可用的gradle任务中,您可以设置所需的jdk路径。(我知道这个问题发布已经有一段时间了。这个答案可以帮助别人。)

右键单击部署或任何其他任务,选择“Open Gradle Run Configuration…”

然后导航到“Java Home”,粘贴你想要的Java路径。

请注意,bin将由gradle任务本身添加。所以不要在路径中添加“bin”。

其他回答

如果你在gradle中添加JDK_PATH。您的构建依赖于该特定路径上的属性。 使用以下命令行参数运行gradle任务

gradle build -Dorg.gradle.java.home=/JDK_PATH

这样您的构建就不依赖于某些具体的路径。

我使用的是Gradle 4.2。JDK默认为Java 9。在Java 9的早期,Gradle 4.2在JDK 8上正确运行(不是JDK 9)。

我手动设置JDK,在%GRADLE_HOME%\bin\gradle.bat文件中:

@if "%DEBUG%" == "" @echo off
@rem ##########################################################################
@rem
@rem  Gradle startup script for Windows
@rem
@rem ##########################################################################

@rem Set local scope for the variables with windows NT shell
if "%OS%"=="Windows_NT" setlocal

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

@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
set DEFAULT_JVM_OPTS=

@rem Find java.exe
if defined JAVA_HOME goto findJavaFromJavaHome

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

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

echo.
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
echo.
echo Please set the JAVA_HOME variable in your environment to match the
echo location of your Java installation.

goto fail

:findJavaFromJavaHome
set JAVA_HOME=%JAVA_HOME:"=%


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


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

if exist "%JAVA_EXE%" goto init

echo.
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
echo.
echo Please set the JAVA_HOME variable in your environment to match the
echo location of your Java installation.

goto fail

:init
@rem Get command-line arguments, handling Windows variants

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

:win9xME_args
@rem Slurp the command line arguments.
set CMD_LINE_ARGS=
set _SKIP=2

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

set CMD_LINE_ARGS=%*

:execute
@rem Setup the command line

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

@rem Execute Gradle
"%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 End local scope for the variables with windows NT shell
if "%ERRORLEVEL%"=="0" goto mainEnd

:fail
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
rem the _cmd.exe /c_ return code!
if  not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
exit /b 1

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

:omega

Android工作室

文件>项目结构> SDK位置> JDK位置>

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

GL

安装JDK

Gradle 6.7+ -使用Gradle工具链支持

在现代版本的Gradle(6.7+版本)中,正确的方法是使用Gradle Java工具链支持。

下面的块,当java插件应用到当前项目时,将在所有java编译、测试和javadoc任务中使用java 11:

java {
  toolchain {
    languageVersion.set(JavaLanguageVersion.of(11))
  }
}

这也可以为单个任务设置。

注意:对于依赖于Java可执行文件或Java home的其他任务,使用编译器元数据来设置适当的选项。下面是版本1.5.30之前Kotlin插件的示例。

Gradle尝试通过几种常见机制自动检测指定JDK的位置。如果自动检测不够,可以配置自定义位置。

Kotlin 1.7.20+

对于Kotlin 1.7.20+, Kotlin插件直接支持工具链,并具有简化的语法:

kotlin {
  jvmToolchain(17)
}

芬兰湾的科特林1.5.30 +

对于Kotlin 1.5.30+, Kotlin插件直接支持工具链:

kotlin {
  jvmToolchain {
    (this as JavaToolchainSpec).languageVersion.set(JavaLanguageVersion.of(17))
  }
}

Kotlin早期版本

为1.5.30之前的版本配置Kotlin编译器需要使用工具链API来确定编译器,并将该信息传递给插件。其他基于编译器的插件可能以类似的方式配置。

val compiler = javaToolchains.compilerFor {
  languageVersion.set(JavaLanguageVersion.of(11))
}

tasks.withType<KotlinJvmCompile>().configureEach {
  kotlinOptions.jdkHome = compiler.get().metadata.installationPath.asFile.absolutePath
}

如Gradle (Eclipse插件)所示

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

Gradle使用它在你的路径中找到的任何JDK(要检查,使用java -version)。或者,您可以将JAVA_HOME环境变量设置为指向所需JDK的安装目录。


如果您正在使用此Eclipse插件或Enide Studio 2014,可使用的替代JAVA_HOME(在Preferences中设置)将在0.15版本中,请参阅http://www.nodeclipse.org/history