Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为make OS X设置JDK路径_Java_Macos_Java 8_Gnu Make_Android Source - Fatal编程技术网

Java 为make OS X设置JDK路径

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

我正在尝试在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.  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使用了回退。现在它正走上正确的道路。谢谢