我已经安装了jdk1.8.0_121,JAVA_HOME似乎正确。 但是当我打开终端时,它总是提醒我“无法找到任何匹配版本的JVM”1.8.0_40“”。
安装了jdk1.8.0_40以前但是我已经卸载了这个版本。
有谁知道如何删除这个烦人的提醒? 非常感谢。
答案 0 :(得分:7)
MacOS X未预装Java开发工具包(JDK)。
在终端中运行java -version
,系统可能会提示您安装Java。 除非您已经安装了JVM,否则您将看到构建版本号。
接下来,系统将提示您访问Java SE Development Kit下载页面。下载其中一个JDK(Java开发工具包),文件扩展名以<filename>.tar.gz
结尾。
然后运行tar -xf <filename>.tar.gz
。
将新创建的目录重命名为JAVA_HOME
。
答案 1 :(得分:6)
我在终端中使用这个命令解决了这个问题
brew install --cask homebrew/cask-versions/adoptopenjdk8
答案 2 :(得分:1)
@sideshowbarker,你是对的。我检查了所有shell初始化文件,发现java版本在/etc/profile
中设置为1.8.0_40。
再次感谢。
答案 3 :(得分:0)
请使用类似brew cask install adoptopenjdk8
的方式安装已弃用的Java版本,特别是。适用于Android Studio。
使用java_home -V
显示Java的所有安装版本,例如:
/usr/libexec/java_home -V
Matching Java Virtual Machines (5):
12.0.2, x86_64: "Java SE 12.0.2" /Library/Java/JavaVirtualMachines/jdk-12.0.2.jdk/Contents/Home
12.0.1, x86_64: "OpenJDK 12.0.1" /Library/Java/JavaVirtualMachines/openjdk-12.0.1.jdk/Contents/Home
1.8.0_222, x86_64: "AdoptOpenJDK 8" /Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home
1.6.0_65-b14-468, x86_64: "Java SE 6" /Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
1.6.0_65-b14-468, i386: "Java SE 6" /Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
,并且在.zshrc
或.bash_profile
中用于设置默认的jdk,例如使用命令setjdk 1.8
export JAVA_HOME=`/usr/libexec/java_home -v 1.8`
function setjdk() {
export JAVA_HOME=`/usr/libexec/java_home -v $@`
}
并且在最近的java / jdk v12中,Android Studio CLI不起作用:
$setjdk 12
$avdmanager
Exception in thread "main" java.lang.NoClassDefFoundError: javax/xml/bind/annotation/XmlSchema
at com.android.repository.api.SchemaModule$SchemaModuleVersion.<init>(SchemaModule.java:156)
at com.android.repository.api.SchemaModule.<init>(SchemaModule.java:75)
at com.android.sdklib.repository.AndroidSdkHandler.<clinit>(AndroidSdkHandler.java:81)
at com.android.sdklib.tool.AvdManagerCli.run(AvdManagerCli.java:213)
at com.android.sdklib.tool.AvdManagerCli.main(AvdManagerCli.java:200)
Caused by: java.lang.ClassNotFoundException: javax.xml.bind.annotation.XmlSchema
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:583)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
... 5 more
答案 4 :(得分:0)
我在安装flutter时遇到了JVM问题,所以我的发现尤其基于macOS 10.15.5,如果安装最新的Java,JVM错误仍然会出现。为此,您必须从Apple安装Java的旧版。
从此处下载Java https://support.apple.com/kb/DL1572?locale=en_GB
然后 启动板->其他->脚本编辑器
创建一个新文档并按原样粘贴以下代码
将DMG设置为选择类型为{“ dmg”}的提示“请选择javaforosx.dmg:”的文件 做shell脚本“ hdiutil mount”和DMG的POSIX路径的引用形式 做shell脚本“ pkgutil --expand / Volumes / Java \ for \ macOS \ 2017-001 / JavaForOSX.pkg〜/ tmp” 做shell脚本“ hdiutil unmount / Volumes / Java \ for \ macOS \ 2017-001 /” 做shell脚本“ sed -i”'s / return false / return true / g'〜/ tmp / Distribution” 做shell脚本“ pkgutil --flatten〜/ tmp〜/ Desktop / ModifiedJava6Install.pkg” 做shell脚本“ rm -rf〜/ tmp” 显示对话框“已保存在桌面上的Modified ModifiedJava6Install.pkg”按钮{“确定”}
然后执行脚本->编译,然后执行脚本->运行。
弹出窗口将要求您找到下载的文件javaforosx.pkg
运行脚本将在您的桌面上创建一个ModifiedJava6Install.pkg。
运行此ModifiedJava6Install.pkg来安装旧版Java。