0

我在 MacBookPro OS 旁边安装了 Ubuntu 12.04(精确)64 位,其处理器:Intel® Core™ i5-3210M CPU @ 2.50GHz × 4。然后我尝试了几天按照本指南安装 eucalyptus 3.2.0 。

当我到达构建阶段时,由于这个问题它失败了:

 BUILD FAILED
/home/asma/eucalyptus-3.2.0/clc/build.xml:111: The following error occurred while executing this line:
java.lang.UnsupportedClassVersionError: org/codehaus/groovy/ant/Groovy : Unsupported major.minor version 51.0
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:643)
    at org.apache.tools.ant.AntClassLoader.defineClassFromData(AntClassLoader.java:1124)
    at org.apache.tools.ant.AntClassLoader.getClassFromStream(AntClassLoader.java:1295)
    at org.apache.tools.ant.AntClassLoader.findClassInComponents(AntClassLoader.java:1351)
    at org.apache.tools.ant.AntClassLoader.findClass(AntClassLoader.java:1311)
    at org.apache.tools.ant.AntClassLoader.loadClass(AntClassLoader.java:1064)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:268)
    at org.apache.tools.ant.AntTypeDefinition.innerGetTypeClass(AntTypeDefinition.java:194)
    at org.apache.tools.ant.AntTypeDefinition.getTypeClass(AntTypeDefinition.java:168)
    at org.apache.tools.ant.AntTypeDefinition.icreate(AntTypeDefinition.java:215)
    at org.apache.tools.ant.AntTypeDefinition.create(AntTypeDefinition.java:206)
    at org.apache.tools.ant.ComponentHelper.createComponent(ComponentHelper.java:286)
    at org.apache.tools.ant.ComponentHelper.createComponent(ComponentHelper.java:264)
    at org.apache.tools.ant.UnknownElement.makeObject(UnknownElement.java:417)
    at org.apache.tools.ant.UnknownElement.maybeConfigure(UnknownElement.java:163)
    at org.apache.tools.ant.Task.perform(Task.java:347)
    at org.apache.tools.ant.taskdefs.Sequential.execute(Sequential.java:68)
    at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291)
    at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:622)
    at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
    at org.apache.tools.ant.Task.perform(Task.java:348)
    at org.apache.tools.ant.taskdefs.MacroInstance.execute(MacroInstance.java:398)
    at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291)
    at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:622)
    at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
    at org.apache.tools.ant.Task.perform(Task.java:348)
    at org.apache.tools.ant.Target.execute(Target.java:390)
    at org.apache.tools.ant.Target.performTasks(Target.java:411)
    at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1399)
    at org.apache.tools.ant.Project.executeTarget(Project.java:1368)
    at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
    at org.apache.tools.ant.Project.executeTargets(Project.java:1251)
    at org.apache.tools.ant.Main.runBuild(Main.java:809)
    at org.apache.tools.ant.Main.startAnt(Main.java:217)
    at org.apache.tools.ant.launch.Launcher.run(Launcher.java:280)
    at org.apache.tools.ant.launch.Launcher.main(Launcher.java:109)

Total time: 0 seconds
make[1]: *** [build] Error 1
make[1]: Leaving directory `/home/asma/eucalyptus-3.2.0/clc'
make: *** [build] Error 2

当然我搜索和谷歌搜索,但所有解决方案都表明确保 java 和 javac 版本相同,因为当 java 版本的编译和运行发生冲突时会发生此问题。我对 java 和 javac 有相同的版本,即:

asma@asma-MacBookPro:~$ java -version
java version "1.6.0_31"
OpenJDK Runtime Environment (IcedTea6 1.13.3) (6b31-1.13.3-1ubuntu1~0.12.04.2)
OpenJDK 64-Bit Server VM (build 23.25-b01, mixed mode)
asma@asma-MacBookPro:~$ javac -version 
javac 1.6.0_31

这是蚂蚁版本:

asma@asma-MacBookPro:~$ ant -version 
Apache Ant(TM) version 1.8.2 compiled on December 3 2011

我现在只在我的 Ubuntu 上安装了 openjdk-6-jdk,并且我删除了 java7。我也尝试只有 openjdk-7-jdk 但构建仍然不成功。

这个错误的原因是什么?有什么想法或建议吗?我需要更改 build.xml 吗?

4

1 回答 1

0

在 Eucalyptus 的构建过程中,它将执行 github.com/euaclyptus/eucalyptus-cloud-libs 的子模块检出,其中包含从源代码构建所需的 jar。在构建旧版本的 Eucalyptus 时,它并不总是为 cloud-libs 签出正确的标签/分支。如果你进入 eucalyptus/clc/lib 并执行一个git status,你应该能够看到哪个分支被签出。如果它是#testing,那么构建将无法工作,因为自 3.2.0 以来依赖关系已经发生了很大变化。我相信 3.2.2 的标签可以正常工作。由于构建过程在该文件夹上签出的方式,它可能不像这样做那么容易git checkout.相反,您可能必须删除该文件夹并手动签出 eucalyptus-cloud-libs 存储库,这是一个大型下载。

顺便说一句 - 在 Eucalyptus 上工作时,我们使用 Java7,所以你最好安装它而不是 6。

如果您是从源代码构建,我建议您尝试从#testing 构建,而不是旧版本。虽然不支持 Ubuntu,但我过去已经构建了 Eucalyptus 并在 Ubuntu 上运行它。该指南和任何指南一样好,但要准备好进行一些黑客攻击。我依稀记得在 Makefiles 中注释掉一些单元测试以使构建成功。

于 2014-08-04T14:27:54.747 回答