如何指示Gradle从其他位置使用Java?

时间:2019-10-17 12:26:09

标签: android android-studio gradle android-gradle-plugin

我当时在Android Studio中构建测试应用,然后在事件日志中显示:

  

Android Studio正在使用以下JDK位置:C:\ Program   Files \ Android \ Android Studio \ jre与Gradle不同   默认情况下使用:C:\ Program Files(x86)\ Java \ jdk1.8.0_181使用   如果Gradle,不同的位置可能会产生多个Gradle守护进程   使用Android Studio时,可从命令行运行任务。

然后提供了以下选项:

  
      
  1. 更多信息...
  2.   
  3. 将Android Studio设置为与Gradle使用相同的JDK并进行同步
  4.   
  5. 不再显示此警告
  6.   

我点击了:

  

将Android Studio设置为与Gradle使用相同的JDK并进行同步

然后我的应用不再想要构建。

这是错误:

  

Gradle同步失败:无法启动守护进程。
  这个   问题可能是由于守护程序的配置不正确造成的。

     

例如,使用了无法识别的jvm选项。
  请参阅   守护程序上的“用户手册”一章,位于   https://docs.gradle.org/5.4.1/userguide/gradle_daemon.html

     

进程命令行:C:\ Program Files(x86)\ Java \ jdk1.8.0_181 \ bin \ java.exe   -Xmx1536m -Dfile.encoding = windows-1252 -Duser.country = ZA -Duser.language = en -Duser.variant -cp C:\ Users \ {MyUserName} \。gradle \ wrapper \ dists \ gradle-5.4.1-全部\ 3221gyojl5jsh0helicew7rwx \ gradle-5.4.1 \ lib \ gradle-launcher-5.4.1.jar   org.gradle.launcher.daemon.bootstrap.GradleDaemon 5.4.1

     

请阅读   以下过程输出以了解更多信息:

     

初始化期间发生错误   VM无法为1572864KB对象堆保留足够的空间             请查阅IDE日志以获取更多详细信息(“帮助” |“显示日志”)(16 s 166 ms)

我检查了事件日志:

我认为以前是这样做的:

  

指示gradle使用C:/ Program Files / Android / Android中的Java   Studio / jre

现在它说:

  

指示gradle使用C:/ Program Files中的Java   (x86)/Java/jdk1.8.0_181

如何将其设置回原来的状态,以便我的应用可以再次构建?

任何帮助/建议将不胜感激

5 个答案:

答案 0 :(得分:3)

您需要更改/添加环境变量。

遵循this link了解如何更改/添加环境变量。

现在添加/修改变量'JAVA_HOME'并将路径设置为C:\Program Files\Android\Android Studio\jre

注意:当以后要在其他IDE中处理另一个Java项目时,可能必须再次将此变量更改为默认Java位置(在这种情况下,可能是C:/Program Files (x86)/Java/jdk1.8.0_181

答案 1 :(得分:1)

Ubuntu 16.04 LTS,Android Studio 3.6

这就是我摆脱警告的方式:

1)在您的计算机上找到AS启动器脚本studio.sh,我的位于以下位置:/opt/android-studio-3.x/bin
2)在脚本中,您会发现以下几行:

# ---------------------------------------------------------------------
# Locate a JDK installation directory which will be used to run the IDE.
# Try (in order): STUDIO_JDK, studio.jdk, ./jre64, JDK_HOME, JAVA_HOME, "java" in PATH.
# ---------------------------------------------------------------------
if [ -n "$STUDIO_JDK" -a -x "$STUDIO_JDK/bin/java" ]; then
  JDK="$STUDIO_JDK"
fi

if [ -z "$JDK" -a -s "$HOME/.AndroidStudio3.6/config/studio.jdk" ]; then
  USER_JRE=`"$CAT" $HOME/.AndroidStudio3.6/config/studio.jdk`
...

3)如果由于某种原因您无法将环境变量导出到启动器(就像我在xfce4会话中遇到的那样),则可以将所需的JAVA_HOME值写入{{ 1}}文件,根据脚本,该文件在我的系统上的位置位于studio.jdk中。

$HOME/.AndroidStudio3.6/config/studio.jdk

4)最后,通过从DE会话重新启动AS,您应该在文件->项目结构-> SDK位置窗口下看到$ echo $JAVA_HOME > $HOME/.AndroidStudio3.6/config/studio.jdk $ cat $HOME/.AndroidStudio3.6/config/studio.jdk /usr/lib/jvm/java-8-oracle 并设置为上述值,并且两者AS和gradle应该使用相同的JRE:

Project Structure Window

答案 2 :(得分:0)

在Android Studio上,我做了:

  

文件>项目结构...> SDK位置(在左窗格中)

然后在底部有一个下拉列表: JDK位置:

然后我选择/浏览到该目录:

  

C:\ Program Files \ Java \ jdk1.8.0_181

之后,Gradle Sync再次为我工作,但我仍然收到此警告:

  

Android Studio正在使用以下JDK位置: C:\ Program   Files \ Java \ jdk1.8.0_181 ,与Gradle使用的不同   默认值: C:\ Program Files(x86)\ Java \ jdk1.8.0_181 。使用   如果Gradle任务,不同的位置可能会产生多个Gradle守护进程   在使用Android Studio时从命令行运行。

     
      
  1. 更多信息...
  2.   
  3. 将Android Studio设置为与Gradle使用相同的JDK并同步项目
  4.   
  5. 不再显示此警告
  6.   

答案 3 :(得分:0)

只需将JAVA_HOME设置为与Android Studio中JDK位置相同的目录

Project structure in Androdi Studio 3.6 beta

答案 4 :(得分:0)

Gradle显然正在使用我的本机Java安装(来自Oracle),而Android Studio正在使用其自己的版本。

自将Android Studio升级到3.6.1以来,我一直无视此警告。 到目前为止没有问题。实际上,我已经发布了我的应用程序的新版本,没有任何问题。

如果这变得令人讨厌,并且如果您没有其他问题,则可以选择忽略以后的警告:只需按警告并选择选项,可以忽略以后与此警告相关的消息。