英文:
How to add and use Android Studio JRE or JBR in $PATH via symlink?
问题
从Windows系统转到macOS系统后,你想将Android Studio的JRE(现在称为JBR)目录添加到环境变量路径中,以便能够在命令行中直接运行像jarsigner和keytool这样的可执行文件。你在网上找到了一种建议的方法,即使用符号链接(symlink)来实现。
首先,你将目录复制到剪贴板中:
/Applications/Android Studio Preview.app/Contents/jbr/Contents/Home/bin
然后,按照这个Stack Overflow的回答执行以下命令:
sudo ln -s /Applications/Android Studio Preview.app/Contents/jbr/Contents/Home/bin /usr/local/bin
你已经使用echo $PATH
命令验证了usr/local/bin
已经存在,所以跳过了创建目录的步骤。不幸的是,这个方法并没有生效,似乎出现了问题。
你看到的结果如下:
user@User-MacBook-Pro ~ % ls -la /usr/local/bin/
total 354896
drwxr-xr-x 9 root wheel 288 Aug 9 02:31 .
drwxr-xr-x 6 root wheel 192 Aug 8 01:12 ..
lrwxr-xr-x 1 root wheel 21 Aug 9 02:31 Android -> /Applications/Android
lrwxr-xr-x 1 root wheel 6 Aug 9 02:31 Studio -> Studio
lrwxr-xr-x 1 root wheel 42 Aug 9 02:31 bin -> Preview.app/Contents/jbr/Contents/Home/bin
lrwxr-xr-x 1 root wheel 45 Aug 8 02:39 corepack -> ../lib/node_modules/corepack/dist/corepack.js
-rwxr-xr-x 1 root wheel 181706736 Jul 18 20:09 node
lrwxr-xr-x 1 root wheel 38 Aug 8 02:39 npm -> ../lib/node_modules/npm/bin/npm-cli.js
lrwxr-xr-x 1 root wheel 38 Aug 8 02:39 npx -> ../lib/node_modules/npm/bin/npx-cli.js
出现了问题,你想知道是什么出错了,以及如何修复。
英文:
Coming from Windows, you can easily add Android Studio's JRE now JBR directory in environment variable path where executable such as jarsigner and keytool are located. I tried to do the same in macOS but using symlink as the suggested method I am seeing in the web.
First I copied the directory to my clipboard
/Applications/Android Studio Preview.app/Contents/jbr/Contents/Home/bin
Then followed this SO answer and executed the below command
sudo ln -s /Applications/Android Studio Preview.app/Contents/jbr/Contents/Home/bin /usr/local/bin
I already echoed $PATH
and found usr/local/bin
so I skipped the mkdir part.
Unfortunately it does not work and seems broken.
This is what I am seeing
user@User-MacBook-Pro ~ % ls -la /usr/local/bin/
total 354896
drwxr-xr-x 9 root wheel 288 Aug 9 02:31 .
drwxr-xr-x 6 root wheel 192 Aug 8 01:12 ..
lrwxr-xr-x 1 root wheel 21 Aug 9 02:31 Android -> /Applications/Android
lrwxr-xr-x 1 root wheel 6 Aug 9 02:31 Studio -> Studio
lrwxr-xr-x 1 root wheel 42 Aug 9 02:31 bin -> Preview.app/Contents/jbr/Contents/Home/bin
lrwxr-xr-x 1 root wheel 45 Aug 8 02:39 corepack -> ../lib/node_modules/corepack/dist/corepack.js
-rwxr-xr-x 1 root wheel 181706736 Jul 18 20:09 node
lrwxr-xr-x 1 root wheel 38 Aug 8 02:39 npm -> ../lib/node_modules/npm/bin/npm-cli.js
lrwxr-xr-x 1 root wheel 38 Aug 8 02:39 npx -> ../lib/node_modules/npm/bin/npx-cli.js
What went wrong and how to fix it?
答案1
得分: 0
在搜索了几个小时后,我终于从这个SO 答案中找到了我要找的内容。
首先检查 java_home 是否在 /usr/libexec 中。
然后检查 /Library/Java/JavaVirtualMachines 目录是否存在。
确认后,在我的情况下获取或复制 Android Studio JBR 的路径,即 /Applications/Android Studio Preview.app/Contents/jbr。
注意到路径中有空格,你可以添加转义字符或者将整个路径用双引号括起来。
注意双引号 ",如果从启用了智能引号替换的应用程序行 Notes 中复制,它会将常规引号更改为“左双引号。
然后你可以使用以下命令创建符号链接,而不是将其复制粘贴到 JavaVirtualMachines 文件夹中。
sudo ln -s "/Applications/Android Studio Preview.app/Contents/jbr" /Library/Java/JavaVirtualMachines
成功后执行以下命令:
export JAVA_HOME=$(/usr/libexec/java_home)
现在你应该能够运行那些在 JRE 或 JBR bin 中可用的命令,比如 keytools 和 jarsigner,同时设置和修复你的 JAVA_HOME 设置。
英文:
After searching for hours I finally got what I am looking for from this SO answer
First check if java_home is in /usr/libexec
Then check if /Library/Java/JavaVirtualMachines directory exist
After confirming, get or copy the Android Studio JBR path in my case this is /Applications/Android Studio Preview.app/Contents/jbr
Noticed that there is spaces in path, what you can do is either add escape or just wrap the whole path with double quote.
Be careful with the double quote " as copying from apps line Notes that has Smart Quote Substitution enabled, it will change your regular quotes to “ Left Double Quotation.
Then you will have this command to create symlink instead of copy pasting it to JavaVirtualMachines folder.
sudo ln -s "/Applications/Android Studio Preview.app/Contents/jbr" /Library/Java/JavaVirtualMachines
Once success execute this command
export JAVA_HOME=$(/usr/libexec/java_home)
You should now be able to run those commands that are available inside JRE or JBR bin such as keytools and jarsigner while also setting and fixing your JAVA_HOME setup.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论