nativescript - TNS Doctor - JDK 配置不正确?
问题描述
Nativescript tns doctor 告诉我 JDK 配置不正确,即使看起来是这样。
我目前在 Mac 上运行 Big Sur。安装完所有 iOS 和 Android 要求后,我不断从 TNS Doctor 收到此错误:
✖ Error executing command 'javac'. Make sure you have installed The Java Development Kit (JDK) and set JAVA_HOME environment variable.
您将无法为 Android 构建项目。为了能够为 Android 构建,请确认您已安装 Java 开发工具包 (JDK) 并按照http://docs.nativescript.org/setup/ns-cli-setup/ns-中所述的系统要求对其进行配置setup-os-x.html#system-requirements
✖ 警告:Java 开发工具包 (JDK) 未安装或配置不正确。
在我的 ~/.bash_profile 中,我将 JAVA_HOME 描述为:
export JAVA_HOME="$(/usr/libexec/java_home -v 1.8)"
我的整个 ~/.bash_profile:
Setting PATH for Python 3.9
The original version is saved in .bash_profile.pysave
PATH="/Library/Frameworks/Python.framework/Versions/3.9/bin:${PATH}"
export PATH
export JAVA_HOME="$(/usr/libexec/java_home -v 1.8)"
export ANDROID_HOME=/usr/local/share/android-sdk
export ANDROID_SDK_ROOT=/usr/local/share/android-sdk
打印环境:
TERM_PROGRAM=Apple_Terminal
ANDROID_HOME=/usr/local/share/android-sdk
SHELL=/bin/bash
TERM=xterm-256color
TMPDIR=/var/folders/lb/d2r8qcsj3p765gs3pnhz9ndh0000gn/T/
TERM_PROGRAM_VERSION=440
ANDROID_SDK_ROOT=/usr/local/share/android-sdk
TERM_SESSION_ID=34C4C80E-4538-4E20-A8CD-F34C21412E64
USER=anthonydionise
SSH_AUTH_SOCK=/private/tmp/com.apple.launchd.QtbknDrCPH/Listeners
PATH=/Library/Frameworks/Python.framework/Versions/3.9/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Library/Apple/usr/bin
__CFBundleIdentifier=com.apple.Terminal
PWD=/Users/anthony
JAVA_HOME=/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home
LANG=en_US.UTF-8
XPC_FLAGS=0x0
XPC_SERVICE_NAME=0
SHLVL=1
HOME=/Users/anthony
LOGNAME=anthony
_=/usr/bin/printenv
除了 tns 错误,JAVA_HOME 似乎配置正确;运行 avdmanager 运行良好。
avdmanager create avd -n test -k "system-images;android-25;google_apis;x86"
Parsing /usr/local/Caskroom/android-sdk/4333796/build-tools/28.0.3/package.xmlParsing /usr/local/Caskroom/android-sdk/4333796/emulator/package.xmlParsing /usr/local/Caskroom/android-sdk/4333796/extras/android/m2repository/package.xmlParsing /usr/local/Caskroom/android-sdk/4333796/extras/google/m2repository/package.xmlParsing /usr/local/Caskroom/android-sdk/4333796/extras/intel/Hardware_Accelerated_Execution_Manager/package.xmlParsing /usr/local/Caskroom/android-sdk/4333796/patcher/v4/package.xmlParsing /usr/local/Caskroom/android-sdk/4333796/platform-tools/package.xmlParsing /usr/local/Caskroom/android-sdk/4333796/platforms/android-28/package.xmlParsing /usr/local/Caskroom/android-sdk/4333796/system-images/android-25/google_apis/x86/package.xmlParsing /usr/local/Caskroom/android-sdk/4333796/tools/package.xmlAuto-selecting single ABI x86
Do you wish to create a custom hardware profile? [no] n
似乎成功创建了一个设备。 avdmanager 列表设备
Parsing /usr/local/Caskroom/android-sdk/4333796/build-tools/28.0.3/package.xmlParsing /usr/local/Caskroom/android-sdk/4333796/emulator/package.xmlParsing /usr/local/Caskroom/android-sdk/4333796/extras/android/m2repository/package.xmlParsing /usr/local/Caskroom/android-sdk/4333796/extras/google/m2repository/package.xmlParsing /usr/local/Caskroom/android-sdk/4333796/extras/intel/Hardware_Accelerated_Execution_Manager/package.xmlParsing /usr/local/Caskroom/android-sdk/4333796/patcher/v4/package.xmlParsing /usr/local/Caskroom/android-sdk/4333796/platform-tools/package.xmlParsing /usr/local/Caskroom/android-sdk/4333796/platforms/android-28/package.xmlParsing /usr/local/Caskroom/android-sdk/4333796/system-images/android-25/google_apis/x86/package.xmlParsing /usr/local/Caskroom/android-sdk/4333796/tools/package.xmlAvailable Android Virtual Devices:
Name: test
Path: /Users/anthonydionise/.android/avd/test.avd
Target: Google APIs (Google Inc.)
Based on: Android 7.1.1 (Nougat) Tag/ABI: google_apis/x86
The following Android Virtual Devices could not be loaded:
Name: Pixel_3a_API_30_x86
Path: /Users/anthonydionise/.android/avd/Pixel_3a_API_30_x86.avd
Error: Google pixel_3a no longer exists as a device
(不太确定像素设备是什么)
解决方案
我的 .bash_profile 文件中的这个设置对我有用:
export JAVA_HOME=$(/usr/libexec/java_home)
请在此处查看此相关问题和答案: 如何在 Mac OS X 10.9 上设置 JAVA_HOME 环境变量?
推荐阅读
- laravel - 同一模型上的雄辩关系
- javascript - JS 函数只在浏览器控制台上工作
- javascript - 无法读取 Reactjs 中未定义的属性“减少”
- python - 如何设计一个拥有 10,000 多个方法的类?
- episerver - 将自定义类属性映射到选择工厂选择项类
- python - 类实例变量不更新
- python - 检查一个数据帧中的值是否存在于其他数据帧中并返回 Python 中的位置
- .net - asp.net core 自定义不记名令牌和 Azure Ad 令牌授权
- django - 如何在 plesk 上托管我的 django rest 框架应用程序
- java - 无法运行 Eclipse Luna