相关疑难解决方法(0)

如何告诉Gradle使用特定的JDK版本?

我无法弄清楚这是否有效.

场景:

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

我想要的是

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

我想过拥有gradle.properties文件,定义变量.就像是

JAVA_HOME_FOR_MY_PROJECT=<path to my desired JDK>
Run Code Online (Sandbox Code Playgroud)

我不想要的

  • 指向JAVA_HOME所需的JDK

我可以接受很多建议:

  • 定义系统环境变量的解决方案,我可以在build.gradle脚本中查看
  • gradle.properties中定义的变量
  • 仅为构建上下文重写JAVA_HOME变量(类似于use JAVA_HOME=<my special JDK path defined somewhere else defined>)
  • 我没有想到的其他事情

题:

  • 如何将变量(如何定义,作为gradle.properties系统环境变量中的变量,......)连接到构建过程?

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

任何答案都表示赞赏,我感谢每一个提示正确的方向.

java gradle build.gradle

242
推荐指数
14
解决办法
25万
查看次数

Gradle发现错误的JAVA_HOME,即使它已正确设置

尝试运行gradle时,出现以下错误:

# gradle

ERROR: JAVA_HOME is set to an invalid directory: /usr/lib/jvm/default-java

Please set the JAVA_HOME variable in your environment to match the
location of your Java installation.
Run Code Online (Sandbox Code Playgroud)

但是,当我检查JAVA_HOME变量时,我得到:

# echo $JAVA_HOME 
/usr/lib/jvm/java-7-oracle
Run Code Online (Sandbox Code Playgroud)

我的JAVA_HOME在.bashrc中定义,我已经仔细检查过它是否被设置为源.

运行java -version还确认JAVA_HOME设置正确并且在PATH上.

# java -version
java version "1.7.0_51"
Java(TM) SE Runtime Environment (build 1.7.0_51-b13)
Java HotSpot(TM) 64-Bit Server VM (build 24.51-b03, mixed mode)
Run Code Online (Sandbox Code Playgroud)

我还检查了/usr/bin/java符号链接到/etc/alternatives/java哪个正确符号链接到的符号链接/usr/lib/jvm/java-7-oracle/jre/bin/java

另外,我已经检查过.bash_profile或者没有重复的JAVA_HOME定义/etc/profile.

所以我的问题是Gradle如何/为何找到/usr/lib/jvm/default-java,更重要的是我如何将其指向正确的目录?

其他需要JDK工作的程序,所以我认为它是Gradle问题.我也尝试重新安装Gradle,没有任何区别.

我正在运行64位Xubuntu(Ubuntu 13.10基础)

java linux environment-variables gradle

159
推荐指数
9
解决办法
13万
查看次数