问题描述
我使用Lein uberjar创建了一个独立的jar。 在运行Java 1.8的笔记本电脑上,这工作得很好。 但是,我学院的计算机运行的是Java 1.7.0_60。
在我的project.clj中,我添加了:javac-options ["-target 1.7"]
以便编译为Java 1.7,但这返回的错误与该jar为Java 1.8编译时的错误相同。
错误为: Unsupported major.minor version 52
。
也许在我的project.clj中增加了:javac-options ["-target 1.7"]
,对编译的版本没有影响,我不确定,请帮忙!
1楼
Clojure当前可编译为与Java 1.6向后兼容的Java类,因此问题不在于Leiningen javac
选项。
我在一个项目中遇到了同样的问题。
问题是您正在使用的库之一被编译为太新的Java版本。
当您构建überjar时,Leiningen只需将类从您的依赖项jar中复制到其中,这样您就可以获得它们具有的任何类文件版本。
为了解决我的问题,我不得不在Github上创建依赖项,并使其构建与Java 1.6兼容的类,然后使Leningen项目依赖于派生而不是主要项目。
2楼
看来您使用的:javac-options
错误。
尝试使用Lein文档中提到的此选项:javac-options ["-target" "1.6" "-source" "1.6" "-Xlint:-options"]
。