Hey Ted,
Thanks for the quick response. Sadly, all of those are 2.10.x:
─$ mvn dependency:tree | grep -A 2 -B 2 org.scala-lang
130 ↵
[INFO] | | \- org.tukaani:xz:jar:1.0:compile
[INFO] | \- org.slf4j:slf4j-api:jar:1.6.4:compile
[INFO] +- org.scala-lang:scala-library:jar:2.10.4:compile
[INFO] +- org.apache.spark:spark-core_2.10:jar:1.4.1:compile
[INFO] | +- com.twitter:chill_2.10:jar:0.5.0:compile
--
[INFO] | | \- org.json4s:json4s-core_2.10:jar:3.2.10:compile
[INFO] | | +- org.json4s:json4s-ast_2.10:jar:3.2.10:compile
[INFO] | | \- org.scala-lang:scalap:jar:2.10.0:compile
[INFO] | +- com.sun.jersey:jersey-server:jar:1.9:compile
[INFO] | | \- asm:asm:jar:3.1:compile
--
[INFO] +- org.apache.spark:spark-sql_2.10:jar:1.4.1:compile
[INFO] | +- org.apache.spark:spark-catalyst_2.10:jar:1.4.1:compile
[INFO] | | +- org.scala-lang:scala-compiler:jar:2.10.4:compile
[INFO] | | \- org.scalamacros:quasiquotes_2.10:jar:2.0.1:compile
[INFO] | \- org.jodd:jodd-core:jar:3.6.3:compile
--
[INFO] | +- org.joda:joda-convert:jar:1.2:compile
[INFO] | +- com.twitter:jsr166e:jar:1.1.0:compile
[INFO] | \- org.scala-lang:scala-reflect:jar:2.10.5:compile
[INFO] +-
com.datastax.spark:spark-cassandra-connector-java_2.10:jar:1.2.4:compile
[INFO] +- commons-codec:commons-codec:jar:1.4:compile
Ben
From: Ted Yu [mailto:[email protected]]
Sent: Wednesday, July 29, 2015 8:30 PM
To: Benjamin Ross
Cc: [email protected]
Subject: Re: NoClassDefFoundError: scala/collection/GenTraversableOnce$class
You can generate dependency tree using:
mvn dependency:tree
and grep for 'org.scala-lang' in the output to see if there is any clue.
Cheers
On Wed, Jul 29, 2015 at 5:14 PM, Benjamin Ross
<[email protected]<mailto:[email protected]>> wrote:
Hello all,
I’m new to both spark and scala, and am running into an annoying error
attempting to prototype some spark functionality. From forums I’ve read
online, this error should only present itself if there’s a version mismatch
between the version of scala used to compile spark and the scala version that
I’m using. However, that’s not the case for me. I’m using scala 2.10.4, and
spark was compiled against scala 2.10.x. Perhaps I’m missing something here.
Also, the NoClassDefFoundError presents itself when debugging in eclipse, but
running directly via the jar, the following error appears:
Exception in thread "main" java.lang.NoClassDefFoundError: scala/collection/Seq
at com.latticeengines.test.CassandraTest.main(CassandraTest.scala)
Caused by: java.lang.ClassNotFoundException: scala.collection.Seq
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
... 1 more
I am getting the following warning when trying to invoke maven, but it doesn’t
seem to be related to the underlying issue:
[INFO] Checking for multiple versions of scala
[WARNING] Expected all dependencies to require Scala version: 2.10.4
[WARNING] com.mycompany:test:2.0.5-SNAPSHOT requires scala version: 2.10.4
[WARNING] com.twitter:chill_2.10:0.5.0 requires scala version: 2.10.4
[WARNING] org.spark-project.akka:akka-remote_2.10:2.3.4-spark requires scala
version: 2.10.4
[WARNING] org.spark-project.akka:akka-actor_2.10:2.3.4-spark requires scala
version: 2.10.4
[WARNING] org.spark-project.akka:akka-slf4j_2.10:2.3.4-spark requires scala
version: 2.10.4
[WARNING] org.apache.spark:spark-core_2.10:1.4.1 requires scala version: 2.10.4
[WARNING] org.json4s:json4s-jackson_2.10:3.2.10 requires scala version: 2.10.0
[WARNING] Multiple versions of scala libraries detected!
[INFO] includes = [**/*.scala,**/*.java,]
Here’s the code I’m trying to run:
object CassandraTest {
def main(args: Array[String]) {
println("Hello, scala!")
val conf = new SparkConf(true).set("spark.cassandra.connection.host",
"127.0.0.1").set(
"spark.driver.extraClassPath",
"/home/bross/.m2/repository/com/datastax/spark/spark-cassandra-connector_2.10/1.2.4/spark-cassandra-connector_2.10-1.2.4.jar;/home/bross/.m2/repository/com/datastax/spark/spark-cassandra-connector_2.10/1.2.4/spark-cassandra-connector_2.10-1.2.4.jar;/home/bross/.m2/repository/org/scala-lang/scala-library/2.10.4/scala-library-2.10.4.jar");
val sc = new SparkContext("local", "test", conf)
val sqlContext = new SQLContext(sc)
val df = sqlContext
.read
.format("org.apache.spark.sql.cassandra")
.options(Map( "table" -> "kv", "keyspace" -> "test"))
.load()
val w = Window.orderBy("value").rowsBetween(-2, 0)
df.select(mean("value").over(w))
}
}
Here’s my maven file:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>test</artifactId>
<packaging>jar</packaging>
<name>${component-name}</name>
<properties>
<component-name>le-sparkdb</component-name>
<hadoop.version>2.6.0.2.2.0.0-2041</hadoop.version>
<scala.version>2.10.4</scala.version>
<spark.version>1.4.1</spark.version>
<avro.version>1.7.7</avro.version>
<parquet.avro.version>1.4.3</parquet.avro.version>
<le.domain.version>2.0.5-SNAPSHOT</le.domain.version>
<le.common.version>2.0.5-SNAPSHOT</le.common.version>
<le.eai.version>2.0.5-SNAPSHOT</le.eai.version>
<spark.cassandra.version>1.2.4</spark.cassandra.version>
</properties>
<parent>
<groupId>com.mycompany</groupId>
<artifactId>le-parent</artifactId>
<version>2.0.5-SNAPSHOT</version>
<relativePath>le-parent</relativePath>
</parent>
<build>
<plugins>
<plugin>
<groupId>org.scala-tools</groupId>
<artifactId>maven-scala-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>compile</goal>
<goal>testCompile</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-eclipse-plugin</artifactId>
<version>${maven.eclipse.version}</version>
<configuration>
<downloadSources>true</downloadSources>
<downloadJavadocs>true</downloadJavadocs>
<projectnatures>
<projectnature>org.scala-ide.sdt.core.scalanature</projectnature>
<projectnature>org.eclipse.jdt.core.javanature</projectnature>
</projectnatures>
<buildcommands>
<buildcommand>org.scala-ide.sdt.core.scalabuilder</buildcommand>
</buildcommands>
<classpathContainers>
<classpathContainer>org.scala-ide.sdt.launching.SCALA_CONTAINER</classpathContainer>
<classpathContainer>org.eclipse.jdt.launching.JRE_CONTAINER</classpathContainer>
</classpathContainers>
<excludes>
<exclude>org.scala-lang:scala-library</exclude>
<exclude>org.scala-lang:scala-compiler</exclude>
</excludes>
<sourceIncludes>
<sourceInclude>**/*.scala</sourceInclude>
<sourceInclude>**/*.java</sourceInclude>
</sourceIncludes>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifest>
<mainClass>com.mycompany.test.CassandraTest</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
</plugins>
<sourceDirectory>src/main/scala</sourceDirectory>
</build>
<dependencies>
<dependency>
<groupId>com.twitter</groupId>
<artifactId>parquet-avro</artifactId>
<version>${parquet.avro.version}</version>
</dependency>
<dependency>
<groupId>org.apache.avro</groupId>
<artifactId>avro</artifactId>
<version>${avro.version}</version>
</dependency>
<dependency>
<groupId>org.scala-lang</groupId>
<artifactId>scala-library</artifactId>
<version>${scala.version}</version>
</dependency>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_2.10</artifactId>
<version>${spark.version}</version>
</dependency>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-sql_2.10</artifactId>
<version>${spark.version}</version>
</dependency>
<dependency>
<groupId>com.mycompany</groupId>
<artifactId>le-domain</artifactId>
<version>${le.domain.version}</version>
<exclusions>
<exclusion>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.mycompany</groupId>
<artifactId>le-common</artifactId>
<version>${le.common.version}</version>
<exclusions>
<exclusion>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.datastax.spark</groupId>
<artifactId>spark-cassandra-connector_2.10</artifactId>
<version>${spark.cassandra.version}</version>
</dependency>
<dependency>
<groupId>com.datastax.spark</groupId>
<artifactId>spark-cassandra-connector-java_2.10</artifactId>
<version>${spark.cassandra.version}</version>
</dependency>
</dependencies>
</project>
Thanks so much for any input.
Ben