我尝试运行启动器但遇到此错误:
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.)是否有任何可以在JDK 6上运行的Presto版本?因为我目前想在我的Cloudera Hadoop集群上运行它,而Cloudera似乎只能与JDK 6一起运行。
感谢。
答案 0 :(得分:5)
Presto仅与Java 7兼容。
您应该能够在同一台计算机上安装Java 6和7。在启动presto启动程序之前,您只需要确保Java 7的bin目录在PATH中。
答案 1 :(得分:3)
Presto肯定不能与JDK 6一起使用。除了大量使用try-with-resources之类的功能外,查询的字节码编译器都基于invokedynamic
。 JDK 7的速度要快得多,更不用说JDK 6自2月以来已经停产。
也就是说,您可以轻松地在同一台计算机上安装两个JDK,并使用JDK 6 for Hadoop和JDK 7 for Presto。 Presto启动器只会使用java
中PATH
的第一个PATH
,因此在运行启动器之前将JDK 7放在{{1}}中。