Eclipse IDE for Scala : symbol is missing from classpath

alukard990 picture alukard990 · Oct 6, 2017 · Viewed 9.3k times · Source

When I build my Scala-Spark project in Eclipse Oxygen (ubuntu 16.04), it returns me this issue in "Problems" console:

 Symbol 'term <none>.typesafe.scalalogging' is missing from the classpath. This symbol is required by 'trait org.graphframes.Logging'. Make sure that term scalalogging is in your classpath and check for conflicting dependencies with `-Ylog-classpath`. A full rebuild may help if 'Logging.class' was compiled against an incompatible version of <none>.typesafe. Example.scala   /FakeYelp/src/main/scala/bigdata/FakeYelp   line 18 Scala Problem

Symbol 'term com.typesafe' is missing from the classpath. This symbol is required by 'trait org.graphframes.Logging'. Make sure that term typesafe is in your classpath and check for conflicting dependencies with `-Ylog-classpath`. A full rebuild may help if 'Logging.class' was compiled against an incompatible version of com.  Example.scala   /FakeYelp/src/main/scala/bigdata/FakeYelp   line 18 Scala Problem

Symbol 'type <none>.slf4j.LazyLogging' is missing from the classpath. This symbol is required by 'trait org.graphframes.Logging'. Make sure that type LazyLogging is in your classpath and check for conflicting dependencies with `-Ylog-classpath`. A full rebuild may help if 'Logging.class' was compiled against an incompatible version of <none>.slf4j.  Example.scala   /FakeYelp/src/main/scala/bigdata/FakeYelp   line 18 Scala Problem

Error is on:

val gFrame = GraphFrame(vertexDF, edgeDF)

How can fix this issue?

UPDATE This is my pom.xml maven configuration:

<dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>


<!-- https://mvnrepository.com/artifact/graphframes/graphframes -->
<dependency>
    <groupId>graphframes</groupId>
    <artifactId>graphframes</artifactId>
    <version>0.5.0-spark2.1-s_2.11</version>
</dependency>

<!-- https://mvnrepository.com/artifact/org.apache.spark/spark-core_2.10 -->
<dependency>
    <groupId>org.apache.spark</groupId>
    <artifactId>spark-core_2.10</artifactId>
    <version>2.1.1</version>
</dependency>

<!-- https://mvnrepository.com/artifact/org.apache.spark/spark-sql_2.11 -->
<dependency>
    <groupId>org.apache.spark</groupId>
    <artifactId>spark-sql_2.11</artifactId>
    <version>2.1.1</version>
    <scope>provided</scope>
</dependency>

<!-- https://mvnrepository.com/artifact/org.apache.spark/spark-graphx_2.11 -->
<dependency>
    <groupId>org.apache.spark</groupId>
    <artifactId>spark-graphx_2.11</artifactId>
    <version>2.1.1</version>
    <scope>provided</scope>
</dependency>
</dependencies>

Answer

Alexey Romanov picture Alexey Romanov · Oct 6, 2017

You can't use ..._2.10 and ..._2.11 together. Maven has no idea about these suffixes being meaningful and so can't provide useful errors. Add a property and use _${scala.binary} to switch dependencies together (and make sure it corresponds to the Scala version you are using).

There may be additional problems, but this needs to be fixed first.