在macOS

时间:2017-02-02 02:50:41

标签: macos terminal java-8

  • 我已经安装了jdk1.8.0_121,JAVA_HOME似乎正确。 但是当我打开终端时,它总是提醒我“无法找到任何匹配版本的JVM”1.8.0_40“”。 enter image description here

  • 安装了jdk1.8.0_40以前但是我已经卸载了这个版本。

有谁知道如何删除这个烦人的提醒? 非常感谢。

5 个答案:

答案 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。