Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在使用Leiningen制作uberjar时针对特定版本的java_Java_Clojure_Jvm_Leiningen - Fatal编程技术网

如何在使用Leiningen制作uberjar时针对特定版本的java

如何在使用Leiningen制作uberjar时针对特定版本的java,java,clojure,jvm,leiningen,Java,Clojure,Jvm,Leiningen,我使用Lein uberjar创建了一个独立的jar。这在我运行Java1.8的笔记本电脑上运行得非常好。然而,我学院的计算机运行的是java 1.7.0_60 在我的project.clj中,我添加了:javac选项[“-target 1.7”],以便编译为java 1.7,但是这返回的错误与为java 1.8编译jar时的错误相同。错误为:不支持的主版本。次版本52 可能在我的项目中添加了:javac options[“-target 1.7”]。clj对编译的版本没有影响,我不确定,请帮助

我使用Lein uberjar创建了一个独立的jar。这在我运行Java1.8的笔记本电脑上运行得非常好。然而,我学院的计算机运行的是java 1.7.0_60

在我的project.clj中,我添加了
:javac选项[“-target 1.7”]
,以便编译为java 1.7,但是这返回的错误与为java 1.8编译jar时的错误相同。错误为:
不支持的主版本。次版本52


可能在我的项目中添加了
:javac options[“-target 1.7”]
。clj对编译的版本没有影响,我不确定,请帮助

看起来您使用的
:javac选项有误。尝试使用Lein文档中提到的此选项:
:javac选项[“-target”“1.6”“-source”“1.6”“-Xlint:-options”]

Clojure当前编译为向后兼容于Java1.6的Java类,因此问题不在于Leiningen
javac
选项。我在我的一个项目中遇到了同样的问题。问题是,您正在使用的一个库是为太新的Java版本编译的。当您构建一个überjar时,Leiningen只需将依赖项jar中的类复制到其中,这样您就可以得到它们拥有的任何类文件版本


在我的例子中,为了解决这个问题,我必须在Github上分叉依赖项项目,使其构建Java 1.6兼容类,然后使我的Leningen项目依赖于分叉而不是主项目。

你的project.clj是什么样子的?您是否依赖于使用Java8编译的任何库?问题在于使用的其中一个库。谢谢在我的例子中,我能够将依赖项回滚到与我的服务器的
1.7
兼容的早期版本。然而,即使是较新的依赖版本在其
项目.clj
中也有
:javac选项[“-target”“1.6”]
,因此除了包版本的发布日期和Uberjar在运行时崩溃之外,我找不到一种简单的方法来测试兼容性。