You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何cider-jack-in-cljs报错,而shadow-cljs cljs-repl app可正常运行?

解决Emacs中cider-jack-in-cljs报UnsupportedClassVersionError的问题

核心原因是Emacs的运行环境和终端环境变量不共享:你切换Java版本的配置(比如修改PATH、JAVA_HOME)只在当前终端会话生效,而Emacs如果不是从终端启动,就不会加载这些配置,导致使用了错误的Java版本,和项目要求的版本不匹配,抛出版本错误。

具体排查与解决步骤:

  • 确认Emacs中的Java版本
    在Emacs里执行M-x shell打开内置shell,运行java -version和echo $JAVA_HOME,对比终端里的输出。如果不一致,就坐实了环境变量不同的问题。

  • 解决办法

    1. 从终端启动Emacs
      直接在已经切换好Java版本的终端里输入emacs启动,Emacs会继承终端的环境变量,自然就能用到正确的Java版本。
    2. 同步终端环境变量到Emacs
      安装exec-path-from-shell包(通过MELPA即可安装),然后在init.el里添加以下配置,让Emacs加载你的shell配置文件(比如.bashrc、.zshrc)并同步关键环境变量:
      (setq exec-path-from-shell-arguments '("-l"))
      (exec-path-from-shell-copy-envs '("JAVA_HOME" "PATH"))
      
    3. 手动指定Java路径给CIDER
      如果不想调整Emacs启动方式,也可以直接在CIDER配置里指定项目需要的Java路径:
      (setq cider-clojure-cli-global-options (concat "-J-Djava.home=" (expand-file-name "/path/to/your/java11")))
      
      这个方式会强制CIDER使用指定的Java版本,适合多项目多Java版本的场景。

内容的提问来源于stack exchange,提问作者Pedro Delfino

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 18:16:06