Java 为make OS X设置JDK路径
我正在尝试在MacOSX10.13.6上构建Android AOSP 运行Java 为make OS X设置JDK路径,java,macos,java-8,gnu-make,android-source,Java,Macos,Java 8,Gnu Make,Android Source,我正在尝试在MacOSX10.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
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\u HOME
和ANDROID\u JAVA\u 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使用了一些其他的后备方法?在OSX上,/System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/不是JDK根所在的位置。JDK install home通常是/Library/Java/JavaVirtualMachines/JDK[无论您安装了什么]。JDK/Contents/home
您需要正确配置JAVA\u主页。
make
不需要知道JAVA在哪里。在~/.profile中的build/core/config.mk:601
doesTry设置:export JAVA_HOME=$(/usr/libexec/JAVA_HOME)处运行的命令。您可以使用特定的版本(例如java_home-v 1.8)。java_home设置正确,java_home-v 1.8
返回相同的路径java_home is/Library/java/JavaVirtualMachines/jdk1.8.0181。jdk/Contents/home
在第601行运行的任何命令都错误地选择了tools.jar的位置。你的make文件第601行是什么?我认为它是使用java二进制文件的路径来计算类路径,而不是使用java_HOME。当我手动运行脚本时,makefile似乎从find jdk tools jar.sh
获得了另一个目录。将打印输出添加到makefile中,我看到变量HOST\u JDK\u TOOLS\u JAR
是System/Library/../Commands
。手动运行脚本将返回正确的/Library/Java/../Contents/Home
。为什么它会返回不同的输出?脚本运行时(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使用了回退。现在它正走上正确的道路。谢谢