2015-10-17 45 views
1

我试图编译Storm Starter与JDK 7为什么closure-maven-plugin没有选择正确的Java版本?

$ 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 

this线程,我使用的Java版本错误,我应该使用Java 7,但我的Java版本 7.所以我的直觉是,编译时,closure-maven-plugin没有选择正确的Java版本。怎样才能让这个项目编译?

+0

什么'MVN输出-version'? –

+0

加入问题^ – Jamie

回答

2

您需要确保$JAVA_HOME/bin(或至少1.7 java可执行文件)首先在您的PATH中,因为它是插件所使用的。

使用指向JDK 1.7的JAVA_HOME,我可以通过在我的PATH中首先将路径设置为java(JDK 1.6目录)来复制此问题。该clojure-maven-plugin代码试图确定这条道路和回落在当前环境中使用刚刚java/PATH

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"; 
    } 
+0

是的,这是关闭一个新的git克隆。我认为我用不同版本的Java构建了'closure-maven-plugin',并且可能将其缓存在某处。下面是'mvn install -DskipTests'的错误输出的链接:http://pastebin.com/MmhZVe4w – Jamie

+0

看起来像'clojure-maven-plugin' juse使用您当前环境中的任何内容,包括Clojure版本和JDK 。工具链中的某些内容只是回退到'PATH'中的''java'“命令,而不是转到'JAVA_HOME/bin'。看起来这是247行的后备 - https://github.com/talios/clojure-maven-plugin/blob/clojure-maven-plugin-1.7.1/src/main/java/com/theoryinpractise/clojure/AbstractClojureCompilerMojo .java –

+0

好的,我运行了'sudo update-alternatives --install/usr/bin/java java $ JAVA_HOME/bin/java 0',后面跟着'sudo update-alternatives java'。我会在安装完成后更新,但现在'mvn install'似乎运行良好:) – Jamie

相关问题