【问题标题】:Run Presto on JDK 6在 JDK 6 上运行 Presto
【发布时间】:2013-11-18 15:58:29
【问题描述】:

我尝试运行启动器但遇到此错误:

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。

谢谢。

【问题讨论】:

    标签: presto jdk1.6 trino


    【解决方案1】:

    Presto 仅与 Java 7 兼容。

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

    【讨论】:

      【解决方案2】:

      Presto 肯定不能与 JDK 6 一起使用。除了大量使用 try-with-resources 等功能外,用于查询的字节码编译器全部基于 invokedynamic。 JDK 7 的速度要快得多,更不用说 JDK 6 从 2 月份就已经结束生命周期了。

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

      【讨论】:

        猜你喜欢
        • 2019-09-30
        • 2016-12-25
        • 2012-11-19
        • 2020-05-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-10-20
        相关资源
        最近更新 更多