【问题标题】:Setting JDK Path for make OS X为 make OS X 设置 JDK 路径
【发布时间】:2018-08-22 14:04:15
【问题描述】:

我正在尝试在 Mac OS X 10.13.6 上构建 Android AOSP

运行 make 时会输出

build/core/config.mk:601: *** Error: could not find jdk tools.jar at /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/../lib/tools.jar, please check if your JDK was installed correctly.  Stop.

JAVA_HOMEANDROID_JAVA_HOME 都设置为我的 JDK 安装目录:

/Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home

我知道System/Library/.../Commands 下的文件是指向正确JDK 安装的存根,但make 也尝试在此目录中找到tools.jar

有没有办法告诉make 在正确的目录中搜索?

编辑

config.mk:601 中出现错误

# We may not have the right JAVA_HOME/PATH set up yet when this is run from envsetup.sh.
ifneq ($(CALLED_FROM_SETUP),true)
HOST_JDK_TOOLS_JAR:= $(shell $(BUILD_SYSTEM)/find-jdk-tools-jar.sh)

ifneq ($(HOST_JDK_TOOLS_JAR),)
ifeq ($(wildcard $(HOST_JDK_TOOLS_JAR)),)
$(error Error: could not find jdk tools.jar at $(HOST_JDK_TOOLS_JAR), 
please check if your JDK was installed correctly)
endif
endif

但是在运行find-jdk-tools-jar.sh 时,它会输出正确的路径,即tools.jar 确实所在的位置。那么 make 使用了其他的备用方法吗?

【问题讨论】:

  • make 不需要知道 Java 在哪里。在build/core/config.mk:601 运行的命令确实
  • 尝试设置:在 ~/.profile 中导出 JAVA_HOME=$(/usr/libexec/java_home)。您可以使用特定版本(例如 java_home -v 1.8)。
  • JAVA_HOME设置正确,java_home -v 1.8返回相同路径

标签: java macos java-8 gnu-make android-source


【解决方案1】:

在 OSX 上,/System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/ 不是 JDK 根目录所在的位置。 JDK 安装目录通常是 /Library/Java/JavaVirtualMachines/jdk[whatever you have installed].jdk/Contents/Home

您需要正确配置您的 JAVA_HOME。

【讨论】:

  • JAVA_HOME 是/Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home
  • 在第 601 行运行的任何命令都错误地选择了 tools.jar 的位置。 make 文件的第 601 行是什么?我认为它使用 java 二进制文件的路径来计算类路径而不是使用 JAVA_HOME。
  • 我在帖子中添加了 config.mk 的相关行。当我手动运行脚本时,makefile 似乎从find-jdk-tools-jar.sh 获得了另一个目录而不是我。在makefile中添加一个打印输出,我看到变量HOST_JDK_TOOLS_JARSystem/Library/.../Commands。手动运行脚本会返回正确的/Library/Java/.../Contents/Home。为什么它返回不同的输出?
  • 脚本运行时 env 是否设置不正确(fork 或其他用户?)。将 echo $JAVA_HOME 添加到那里或 find-jdk-tools-jar.sh 中,我怀疑问题在那里被发现,因为脚本假设 $JAVA_HOME/bin 是它找到 java 的目录,但在 OSX 中不是这样。这解释了为什么在错误中找到 ../lib/tools.jar。您需要修复 find-jdk-tools-jar.sh 以正确检测 JAVA_HOME。
  • 你是对的。没有为所有用户设置 JAVA_HOME,我将 make 作为 sudo 运行,因此它使用了后备。现在它正在走上正确的道路。谢谢!
猜你喜欢
  • 2017-02-18
  • 2012-03-25
  • 1970-01-01
  • 2014-12-18
  • 2018-03-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多