Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.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
为什么';t closure maven插件选择正确的Java版本?_Java_Maven_Clojure - Fatal编程技术网

为什么';t closure maven插件选择正确的Java版本?

为什么';t closure maven插件选择正确的Java版本?,java,maven,clojure,Java,Maven,Clojure,我正在尝试使用JDK 7进行编译 $ echo $JAVA_HOME [master] /opt/jdk1.7.0_80 $ mvn -version Apache Maven 3.0.5 Maven home: /usr/share/maven Java version: 1.7.0_80, vend

我正在尝试使用JDK 7进行编译

$ echo $JAVA_HOME                                                                                                 [master] 
/opt/jdk1.7.0_80

$ mvn -version
Apache Maven 3.0.5
Maven home: /usr/share/maven
Java version: 1.7.0_80, vendor: Oracle Corporation
Java home: /opt/jdk1.7.0_80/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "3.13.0-65-generic", arch: "amd64", family: "unix"

$ mvn clean install -DskipTests=true
                ...
[INFO] --- clojure-maven-plugin:1.7.1:compile (compile-clojure) @ storm-core ---
Compiling backtype.storm.LocalDRPC to /home/incubator-storm/storm-core/target/classes

Exception in thread "main" java.lang.UnsupportedClassVersionError: backtype/storm/ILocalDRPC : Unsupported major.minor version 51.0, compiling:(backtype/storm/LocalDRPC.clj:17:1)
Caused by: java.lang.UnsupportedClassVersionError: backtype/storm/ILocalDRPC : Unsupported major.minor version 51.0

根据thread的说法,我使用了错误的Java版本,我应该使用Java7。但是我的Java版本是7。所以我的直觉是closuremaven插件在编译时没有选择正确的Java版本。如何编译此项目?

您需要确保
$JAVA_HOME/bin
(或者至少是1.7
JAVA
可执行文件)在
路径中处于第一位,因为这是插件使用的

当JAVA_HOME指向JDK 1.7时,我可以通过在我的
路径中首先将路径设置为
JAVA
(JDK 1.6目录)来复制这个问题。
clojure maven插件
代码尝试确定此路径,并退回到在当前环境中仅使用
java
路径

 private String getJavaExecutable() throws MojoExecutionException {

    Toolchain tc = toolchainManager.getToolchainFromBuildContext("jdk", //NOI18N
                                                                 session);
    if (tc != null) {
      getLog().info("Toolchain in clojure-maven-plugin: " + tc);
      String foundExecutable = tc.findTool("java");
      if (foundExecutable != null) {
        return foundExecutable;
      } else {
        throw new MojoExecutionException("Unable to find 'java' executable for toolchain: " + tc);
      }
    }

    return "java";
  }

mvn-version的输出是什么?是的,这是一个新的git克隆。我想我用不同版本的Java构建了
closureMaven插件
,可能是缓存在某个地方。这里有一个链接指向
mvn安装-DskipTests
的错误输出:看起来
clojure-maven插件
juse使用当前环境中的任何东西,包括clojure版本和JDK。工具链中的某些内容只是返回到
路径中的“
java
”命令,而不是返回到
java\u HOME/bin
。似乎这是第247行的退步-好的,我运行了
sudo更新替代方案--install/usr/bin/java$java\u HOME/bin/java 0
,然后是
sudo更新替代方案java
。我会在安装完成后更新,但现在mvn安装似乎运行良好:)是的,就是这样!所以我的问题是我路径上的java与$java_HOME中的java不匹配。如果你修改你的答案,我会接受的。