Какая версия JVM будет работать с CIDER в Windows

Есть ли способ заставить CIDER использовать определенную версию JVM?

Я обновлял ряд проектов для использования недавно выпущенной Java 8, включая некоторые проекты Clojure, которые зависят от взаимодействия с Java. Однако во время разработки я столкнулся с некоторыми проблемами с некоторыми инструментами. Одним из них является использование CIDER из Emacs. Кажется, я не могу заставить его использовать Java 8 JVM.

В моей системе установлены версии JDK 1.7.0_17, _21, _25, _40, _45, _51 и 1.8.0 для тестирования совместимости.

Когда я запускаю CIDER REPL и проверяю версию Java, я вижу это:

; CIDER 0.6.0alpha (package: 20140322.332) (Clojure 1.6.0, nREPL 0.2.3)
eight-queens.core> (System/getProperty "java.version")
"1.7.0_25"

Я видел аналогичные результаты при использовании nREPL до обновления до CIDER. Я вижу аналогичные результаты при использовании REPL в Light Table. Все работает, как и ожидалось, с помощью Clojure REPL, запущенного из командной строки.

Мои переменные среды, связанные с Java, включают:

ПУТЬ содержит: C:\Program Files\Java\jdk1.8.0\bin\

JAVA_HOME: C:\Program Files\Java\jdk1.8.0

LEIN_JAVA_CMD: C:\Program Files\Java\jdk1.8.0\bin\java

(Leiningen, запущенный из командной оболочки в Emacs, вызвал аналогичную проблему до добавления переменной среды LEIN_JAVA_CMD. Как ни странно, добавление переменной среды изменило версию JVM, используемую CIDER. До добавления переменной среды сообщалось об использовании версии 1.7.0_40. )

Я не нашел ничего подходящего в реестре Windows.

Есть ли способ заставить CIDER работать с конкретной JVM, не удаляя все остальное?


person clartaq    schedule 06.04.2014    source источник


Ответы (1)


CIDER (или cider-jack-in, если быть точным) использует lein для запуска REPL (используя команду lein repl). Я не уверен, как Windows cmd.exe, но я предполагаю, что вы не установили LEIN_JAVA_CMD в качестве глобальной переменной env, и поэтому это не влияет на cmd.exe оболочки Emacs для lein repl.

person Bozhidar Batsov    schedule 07.04.2014
comment
Как указано в OP, переменная среды LEIN_JAVA_CMD уже была установлена ​​​​так, чтобы она указывала на Java 8. Запуск lein version в Windows CLI и в оболочке Emacs производит Leiningen 2.3.4 on Java 1.8.0 Java HotSpot(TM) 64-Bit Server VM, как и ожидалось, но CIDER (а также nREPL и LightTable) по-прежнему сообщают, что они работают под более старой JVM. Странно, да? - person clartaq; 07.04.2014
comment
Я не был уверен, что вы установили его локально, поэтому мой комментарий. Я разработчик CIDER, но я не использую Windows, и мои знания о его оболочке ограничены. Я думаю, вы можете играть с cider-server-command, но я не могу думать ни о чем другом. - person Bozhidar Batsov; 07.04.2014
comment
Спасибо, Божидар. Это была забытая настройка java-cmd в профиле пользователя в profiles.clj. Не уверен, как он туда попал, поскольку он присутствовал в нескольких системах. Теперь перейдем к выяснению того, почему Light Table InstaRepl делает что-то подобное. - person clartaq; 08.04.2014
comment
Это не верно. CIDER использует загрузку, если проект использует ее. - person HappyFace; 24.04.2018
comment
Я не ошибся, когда написал это. ;-) Теперь CIDER также поддерживает gradle и tools.deps, кстати. - person Bozhidar Batsov; 26.04.2018
comment
Спасибо. Столкнулся с той же проблемой в Windows 10, где у меня было установлено несколько версий Java. Только после установки LEIN_JAVA_CMD оболочка emacs использовала правильную версию java, соответствующую JAVA_HOME и JDK_HOME. - person skullgoblet1089; 18.09.2020