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

GitHub Actions部署Clojure项目遇Java版本不兼容错误如何修复?

修复Leiningen项目Java编译版本不兼容问题

这个错误的根源很明确:你使用的Maven Compiler Plugin 3.1已经废弃了对Java 1.5的支持,但Leiningen默认生成的POM里还在用1.5作为source和target版本。你提到的:java-source-paths和这个问题无关,它只是指定Java源码的路径,不影响编译版本设置。

直接修改project.clj就能解决问题,不需要手动改动生成的POM,具体步骤如下:

  1. 打开项目根目录的project.clj文件,在项目配置块中添加:javac-options,指定兼容的Java版本(推荐用1.8及以上的LTS版本,比如1.8、11或17):
(defproject flow "your-version"
  ;; 保留你原有的其他配置项
  :javac-options ["-source" "1.8" "-target" "1.8"]
  ;; 若使用Java 9+,更推荐用--release参数,它能自动处理跨版本兼容问题:
  ;; :javac-options ["--release" "8"]
  :java-source-paths ["src/java"] ;; 你的现有配置无需修改
  ;; 其他配置...
)
  1. 本地验证修复效果:
    • 先执行lein clean清除旧的编译产物
    • 再运行lein install重新生成POM并编译项目
    • 打开生成的pom.xml,检查maven-compiler-plugin部分,应该已经显示你指定的版本,示例如下:
<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-compiler-plugin</artifactId>
  <version>3.1</version>
  <configuration>
    <source>1.8</source>
    <target>1.8</target>
  </configuration>
</plugin>
  1. 将修改后的project.clj推送到GitHub,重新触发Actions工作流,即可通过编译。

额外提醒:如果你的GitHub Actions runner使用的是较高版本的Java(比如11或17),优先使用--release参数,它比单独设置source和target更稳妥,能保证编译出的字节码在目标版本环境下正常运行。

内容的提问来源于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.05 00:20:30