在Mac OS X El Capitan上出现了不支持的major.minor版本

16
在网上查找解决方案时,我发现关于El Capitan版本的Java主版本和次版本不正确的问题,有几个解决方案要求你要么禁用rootless(根保护),这听起来让我不太满意,或者仅仅是在OS X El Capitan上不再适用。

2
你有什么问题? - EluciusFTW
2
没有一个。这是一个自我回答,可能有助于其他遇到同样问题的人,因为我花了几个小时搜索解决方案,并在下面发布了它。 - Bowersbros
2个回答

58

在El Capitan上尝试运行webdriver-manager start时,您可能会遇到以下错误:

Exception in thread "main" java.lang.UnsupportedClassVersionError: org/openqa/grid/selenium/GridLauncher : Unsupported major.minor version 51.0
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClassCond(ClassLoader.java:637)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:621)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
    at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
Selenium Standalone has exited with code 1

推荐的在线解决方法是更改 Mac OS X 对 Java 的符号链接,您可以在终端中运行 echo $JAVA_HOME 找到此链接。
这指向了错误的文件夹,错误是因为该应用程序使用比终端中运行的 JRE 版本更高的版本编译而成。
您应该前往 Oracle,并下载最新的 JRE 版本(http://www.oracle.com/technetwork/java/javase/downloads/jre8-downloads-2133155.html
安装完成后,您将拥有 Java 8,但它不会正确更新终端。如果在终端中运行 java -version,您将看到 Java Version "1.6",您需要让其显示为 Java Version "1.8"。以前更改符号链接的方式已经过时,因为自 El Capitan 以来,苹果已经使某些目录无法更改,即使对于管理员用户也是如此,使用 Rootless 安装。其中包括 /usr 文件夹。
有两种修复方法,第一种方法很危险,是其他人似乎推荐的方法。第二种方法更安全,我在此提供。
如果您转到 系统偏好设置-> Java-> Java-> 查看...-> 系统 并复制路径字段。
它将类似于以下内容: /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/java 我们需要此路径的大部分内容,除了末尾的 /bin/java
因此,您现在应复制路径为: /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home 在终端中运行以下命令,将 [PATH] 替换为上面获取到的路径。 export JAVA_HOME="[PATH]" 然后在终端中运行它。
之后再次运行 java -version,现在它应该会显示Java Version "1.8"
现在,webdriver-manager start 应该已经成功。

7
这对我有用,但我还需要将export JAVA_HOME="[PATH]"加入到我的.bash_profile文件中。如果不这样做,每次重新启动时路径都会恢复为1.6版本。 - Ryan

1

将以下行添加到~/.bash_profile对我有用:

export JAVA_HOME="$(/usr/libexec/java_home --version 1.8)"

你可能需要重新启动你的终端才能使这些更改生效,或者只需运行以下命令:

. ~/.bash_profile

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接