Scala包抛出java.lang.UnsupportedClassVersionError

时间:2015-07-28 07:49:29

标签: scala

我们的java应用程序依赖于Spark,它是用Scala编写的。构建工具是Maven,我在Eclipse中运行。 JDK_HOME用于使用Maven在命令行上编译应用程序,而用于在Eclipse中运行的JRE都是1.7.0_15

Maven POM包含以下内容:

<plugin>
   <groupId>org.scala-tools</groupId>
   <artifactId>maven-scala-plugin</artifactId>
   ...
   <configuration>
      <scalaVersion>1.10.5</scalaVersion>
         <args>
            <arg>-target:jvm-1.7</arg>
         </args>
   </configuration>
</plugin>

我知道Spark是使用Scala 2.10构建的

maven依赖项包括以下内容:

<dependency>
   <groupId>org.apache.spark</groupId>
   <artifactId>spark-core_2.11</artifactId>
   <version>1.3.1</version>
</dependency>

<dependency>
   <groupId>org.elasticsearch</groupId>
   <artifactId>elasticsearch-hadoop</artifactId>
   <version>2.1.0.Beta4</version>
</dependency>

<dependency>
   <groupId>org.elasticsearch</groupId>
   <artifactId>elasticsearch-spark_2.10</artifactId>
   <version>2.1.0.Beta4</version>
</dependency>

<dependency>
   <groupId>org.scala-lang</groupId>
   <artifactId>scala-xml</artifactId>
   <version>2.11.0-M4</version>
</dependency>

<dependency>
   <groupId>org.scala-lang.modules</groupId>
   <artifactId>scala-parser-combinators_2.12.0-M2</artifactId>
   <version>1.0.4</version>
   </dependency>

<dependency>
   <groupId>org.apache.spark</groupId>
   <artifactId>spark-sql_2.10</artifactId>
   <version>1.3.0</version>
</dependency

&GT;

在运行时,抛出以下异常:

Exception in thread "main" java.lang.UnsupportedClassVersionError: scala/util/parsing/combinator/PackratParsers : Unsupported major.minor version 52.0

我找不到scala-parser-combinators jar的2.10。*版本。

有人可以协助解决方案吗?

谢谢!

1 个答案:

答案 0 :(得分:2)

scala-parser-combinators_2.12.0-M2模块是Scala 2.12发行版的一部分。

2.12针对Java 8 - 字节码主要版本52,因此出错。

您最好的选择是使用较旧的Spark发行版或切换到Java 8 (Java 7自2015年4月起停止使用)。

编辑(解决问题编辑):您无法找到scala-parser-combinators库的旧版本,因为它在2.10之后的某个时刻被隔离到独立模块。您可以尝试简单地exclude this dependency in your POM,但不能保证您选择的Spark版本与此旧库版本兼容。