Java 7环境下Leiningen 2.X.X执行报错的解决方法咨询
解决Java 7下Leiningen 2.X.X版本的UnsupportedClassVersionError问题
报错原因
Exception in thread "main" java.lang.UnsupportedClassVersionError: clojure/main : Unsupported major.minor version 52.0 这个错误的核心原因是:
- 版本号52.0对应Java 8,意味着你运行的Clojure类文件是用Java 8编译的,但你的环境是Java 7,两者版本不兼容。
- Leiningen 2.X.X从2.9.0版本开始,默认依赖的Clojure版本升级到了需要Java 8的版本,所以直接用新版Leiningen在Java 7环境下会触发这个报错。
解决步骤
1. 安装兼容Java 7的Leiningen版本
选择Leiningen 2.8.3版本(这是最后一个官方支持Java 7的稳定版):
- 下载该版本的
lein脚本,替换你当前系统中的lein可执行文件 - 给脚本添加执行权限:
chmod +x lein - 确保脚本在系统PATH路径中
2. 强制项目使用兼容Java 7的Clojure版本
即使Leiningen版本兼容,项目如果依赖高版本Clojure(1.9及以上需要Java 8)仍会报错,需修改项目根目录下的project.clj:
- 在
:dependencies中指定Clojure 1.8.0(最后一个支持Java 7的Clojure稳定版)::dependencies [[org.clojure/clojure "1.8.0"]] - 添加Java编译选项,确保代码以Java 7为目标版本:
:javac-options ["-source" "1.7" "-target" "1.7"]
3. 验证配置
执行lein version,如果输出正常且显示Clojure版本为1.8.0,说明配置成功。后续运行项目时,也需要确保项目的其他依赖库均兼容Java 7。
内容的提问来源于stack exchange,提问作者Spiros Vardis
相关产品推荐
相关产品推荐

