Неподдерживаемая версия major.minor для Mac OS X El Capitan

Следуя решениям онлайн для майорной версии Java, некорректной на El Capitan, я увидел несколько решений, которые заставили вас либо отключить rootless, что мне не понравилось, либо просто не работали в OS X Эль Капитан.

Ответы

Ответ 1

При попытке запустить webdriver-manager start на El Capitan вы можете получить сообщение об ошибке:

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, Apple, сделали определенные папки неспособными даже пользователям admin, с их установкой Rootless. Это включает в себя папку /usr.

Есть два способа исправить это, первое опасно и то, что все остальные рекомендуют. Второй, более безопасный и то, что я помещаю здесь.

Если вы перейдете к System Preferences -> Java -> Java -> View... -> System и скопируете поле "Путь".

Он будет выглядеть примерно так:

/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 должен преуспеть.

Ответ 2

Добавление следующей строки в ~/.bash_profile работает для меня:

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