在Android Studio同步我的gradle项目后,我在事件日志中看到以下消息:
Android Studio正在使用这个JDK位置:/path/to/my/project/specific/JDK
,这与Gradle默认使用的不同:/path/to/Android/Studio/embedded/JDK
如果在使用Android Studio时Gradle任务是从命令行运行的,那么使用不同的位置可能会产生多个Gradle守护进程。将Android Studio设置为使用与Gradle和sync项目相同的JDK
我的.bash_profile
中包含以下内容:
export JAVA_HOME=/path/to/my/project/specific/jdk
而studio_jdk
文档说明:
设置用于运行Studio的JDK的位置。启动Android Studio时,它会按此顺序检查studio_jdk
、jdk_home
和java_home
环境变量。
所以我希望Android Studio会找到/path/to/my/project/specific/jdk
,但它没有找到。有专门针对Gradle的特殊JDK设置吗?
更新
对于macOS
只发生在macOS Mojave10.14.6
上。在macOS Catalina10.15.3
上,您只需要在Shell中设置JAVA_HOME
。
此答案涉及macos
案例。它并不意味着Linux或Windows解决方案。
launchctl setenv JAVA_HOME /path/to/my/project/specific/jdk
或者,如果希望使用系统定义的JDK:
launchctl setenv JAVA_HOME `/usr/libexec/java_home`
但这只适用于计算机的当前会话。接下来,您必须创建一个~/library/launchagents/environment.plist
文件:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>my.startup</string>
<key>ProgramArguments</key>
<array>
<string>sh</string>
<string>-c</string>
<string>
launchctl setenv JAVA_HOME /path/to/my/project/specific/jdk
</string>
</array>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>
或者,如果希望使用系统定义的JDK:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>my.startup</string>
<key>ProgramArguments</key>
<array>
<string>sh</string>
<string>-c</string>
<string>
launchctl setenv JAVA_HOME `/usr/libexec/java_home`
</string>
</array>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>
我怀疑Android Studio实际上没有看到我的java_home
环境变量,所以我检查了Android Studio进程的环境变量:
$ ps ax | grep Android
13466 ?? S 177:42.60 /path/to/my/Android/sdk/emulator/qemu/darwin-x86_64/qemu-system-x86_64 -netdelay none -netspeed full -no-snapstorage -avd Pixel_2_API_28
13478 ?? S 0:04.88 /path/to/my/Android/sdk/emulator/emulator64-crash-service -pipe com.google.AndroidEmulator.CrashService.13466 -ppid 13466 -data-dir /tmp/foo/9ecb0c71-921f-44b8-8b77-f34ac80bb8fa
40253 ?? R 6:21.34 /Applications/Android Studio-3.5-Preview.app/Contents/MacOS/studio
40342 ?? S 0:00.07 /Applications/Android Studio-3.5-Preview.app/Contents/bin/fsnotifier
40610 s001 S+ 0:00.00 grep Android
$ ps eww 40253
/Applications/Android Studio-3.5-Preview.app/Contents/MacOS/studio TMPDIR=/var/folders/j4/htlnmbf97vlcdszj7_x8g0vh4k3_fp/T/ __CF_USER_TEXT_ENCODING=0x921A9D6:0x0:0x0 SHELL=/bin/false HOME=/Users/myusername Apple_PubSub_Socket_Render=/private/tmp/com.apple.launchd.zL6tIxvlEo/Render SSH_AUTH_SOCK=/private/tmp/com.apple.launchd.sKG8qr6MNW/Listeners PATH=/usr/bin:/bin:/usr/sbin:/sbin LOGNAME=myusername XPC_SERVICE_NAME=com.google.android.studio-EAP.21860 USER=myusername XPC_FLAGS=0x1
这意味着Android Studio没有看到我的java_home
。
接下来,我尝试从终端上线安卓工作室:
$ echo $JAVA_HOME
/path/to/my/project/specific/jdk
$ open /Applications/Android Studio-3.5-Preview.app
$ ps eww <Android Studio Pid>
并且这转储了更多的输出,包括我的java_home
。因此,我需要弄清楚如何为从finder.app
启动的应用程序设置一个环境变量,我在上面介绍了这一点。
Android Studio同步我的gradle项目后,我在事件日志中看到以下消息: Android Studio正在使用这个JDK位置:,这与Gradle默认使用的不同:如果在使用Android Studio时从命令行运行Gradle任务,使用不同位置可能会产生多个Gradle守护程序。将Android Studio设置为使用与Gradle和sync项目相同的JDK 我的: 而文档中说: 设置运
IntelliJ Idea使用作为所有导入的Gradle项目的默认Gradle位置: 我想在默认情况下对导入的Gradle项目使用< code >指定位置: 但是,不可能选择作为默认选项。 如何强制Idea对新的导入项目使用? 联系: IDEA以及如何禁用分级包装生成 对新项目使用本地梯度分布而不是包装
默认情况下,如果安装Oracle JDK,它将不会用作默认java环境。 从/usr/bin/java*到/system/Library/Frameworks/JavaVM的所有系统符号链接都会转发到/system/Library/Frameworks。framework/Versions/Current而不是CurrentJDK。 我怎么能改变这些,有什么脚本可以改变默认的java吗?
我从Ronak Shah和akrun(在本文中)那里学到了如何构造正则表达式,以从数据帧(在我的示例中为alldata)中排除除这些单词之外的所有术语, ^\B WORD 1|WORD 2|WORD 3|WORD 4|WORD 5\ 但出于某些原因,我不明白为什么它给了我 “WORD2”,“WORD3”,不适用 而不是 “WORD1 WORD2 WORD5”,“WORD3”,不适用 以下是我的示例
我们使用gradle构建我们的Java项目,有些基于JDK7,有些基于JDK8。我知道org.gradle.java.home属性,但在我看来它有缺陷。 如果我在'~/.gradle/gradle.properties'中配置它,这将迫使我对所有gradle项目使用相同的JDK。 对此最好的解决方案/变通办法是什么?
我正在使用下面的代码裁剪一个图像。当我打印裁剪的,它的显示和空数组。谁能帮我把这剪裁做好吗