web-dev-qa-db-fra.com

la compilation scalac donne "l'objet Apache n'est pas membre du paquet org"

Mon code est:

import org.Apache.spark.SparkContext

Il peut fonctionner en mode interactif, mais lorsque j'utilise scalac pour le compiler, j'ai le message d'erreur suivant:

object Apache n'est pas membre du paquet org

Cela semble être le problème du chemin, mais je ne sais pas exactement comment configurer le chemin.

23
Jiang Xiang

Vous devez spécifier le chemin des bibliothèques utilisées lors de la compilation de votre code Scala. Cela n’est généralement pas fait manuellement, mais avec un outil de compilation tel que Maven ou sbt. Vous pouvez trouver une configuration sbt minimale sur http://spark.Apache.org/docs/1.2.0/quick-start.html#self-contained-applications

18
tgpfeiffer

J'ai eu ce problème parce que j'avais une mauvaise portée pour ma dépendance aux étincelles. C'est faux:

<dependency>
  <groupId>org.Apache.spark</groupId>
  <artifactId>spark-core_2.11</artifactId>
  <version>${spark.version}</version>
  <scope>test</scope> <!-- will not be available during compile phase -->
</dependency>

Ceci fonctionnera et n'inclura pas d'étincelle dans votre uberjar, ce que vous souhaiterez presque certainement:

<dependency>
  <groupId>org.Apache.spark</groupId>
  <artifactId>spark-core_2.11</artifactId>
  <version>${spark.version}</version>
  <scope>provided</scope>
</dependency>
3
WattsInABox

Un moyen simple (si vous utilisez Play Framework) est de rechercher la LibraryDependacy dans le Maven Repository , choisissez la version, choisissez SBT puis ajoutez-la au bas de votre fichier project/build.sbt ainsi:

// https://mvnrepository.com/artifact/org.Apache.spark/spark-core
libraryDependencies += "org.Apache.spark" %% "spark-core" % "2.3.2"

Ensuite, vous voudrez entrer reload dans la console sbt, puis compile. Cela peut sembler un peu étranger si vous venez de pip ou js mais le Maven Repo est votre ami.

J'ai eu le même problème, assurez-vous que vous êtes dans le répertoire racine.

0
wonder