3

我试图运行启动器,但遇到了这个错误:

Exception in thread "main" java.lang.UnsupportedClassVersionError: sun/misc/FloatingDecimal : Unsupported major.minor version 51.0
    at java.lang.Double.toString(Double.java:196)
    at java.lang.String.valueOf(String.java:2985)
    at java.security.Provider.putId(Provider.java:433)
    at java.security.Provider.<init>(Provider.java:137)
    at sun.security.jca.ProviderList$1.<init>(ProviderList.java:71)
    at sun.security.jca.ProviderList.<clinit>(ProviderList.java:70)
    at sun.security.jca.Providers.<clinit>(Providers.java:56)
    at sun.security.util.ManifestEntryVerifier.<clinit>(ManifestEntryVerifier.java:47)
    at java.util.jar.JarFile.initializeVerifier(JarFile.java:335)
    at java.util.jar.JarFile.getInputStream(JarFile.java:410)
    at sun.misc.URLClassPath$JarLoader$2.getInputStream(URLClassPath.java:721)
    at sun.misc.Resource.cachedInputStream(Resource.java:77)
    at sun.misc.Resource.getByteBuffer(Resource.java:160)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:266)
    at java.net.URLClassLoader.access$000(URLClassLoader.java:73)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:212)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
Could not find the main class: com.facebook.presto.server.PrestoServer. Program will exit.

我认为这是因为我在 JDK 6 上运行启动器。(而它需要 JDK 7。)是否有任何版本的 Presto 可以在 JDK 6 上运行?因为我目前想在我的 Cloudera Hadoop 集群上运行它,而 Cloudera 似乎只适用于 JDK 6。

谢谢。

4

2 回答 2

5

Presto 仅与 Java 7 兼容。

您应该能够在同一台机器上安装 Java 6 和 7。在启动 presto 启动器之前,您只需要确保 Java 7 的 bin 目录位于您的 PATH 中。

于 2013-11-07T05:49:18.433 回答
3

Presto 肯定不会与 JDK 6 一起使用。除了大量使用诸如 try-with-resources 之类的功能外,用于查询的字节码编译器都是基于invokedynamic. JDK 7 的速度要快得多,更不用说 JDK 6 自 2 月以来就已经结束了生命周期。

也就是说,您可以轻松地将两个 JDK 安装在同一台机器上,并将 JDK 6 用于 Hadoop,将 JDK 7 用于 Presto。Presto 启动器将简单地使用java中的第一个,因此在运行启动器之前PATH将 JDK 7 放在您的首位。PATH

于 2013-11-07T06:20:04.387 回答