残念ながら、Spark v1.5.2
はcom.google.inject:guice:3.0
に依存しています。
だから私は何が起こっていることは、あなたのプロジェクトは、両方を引っ張っているということであると思われる:
Guice 4.0
(あなたの依存関係に記載された直接の依存関係がpom.xml
かbuild.sbt
のようなファイルなど)。そして
Guice 3.0
は(Spark v1.5.2
によって引っ張ら推移依存)
基本的にクラスパスが台無しなってしまう、とクラスが必要になります(またはしない)、実行時にクラスローダによってロードされている方法に応じて、そのような経験しますエラーの種類。
すでにprovided
バージョンのGuice(Sparkによって引っ張られている)を使用するか、クラスローダーでジャグリングを開始する必要があります。
UPDATE:
実際org.apache.spark:spark-core_2.10:1.5.2
はcom.google.inject:guice:3.0
を引っ張る:
+-org.apache.spark:spark-core_2.10:1.5.2 [S]
+ ...
...
+-org.apache.hadoop:hadoop-client:2.2.0
| +-org.apache.hadoop:hadoop-mapreduce-client-app:2.2.0
| | +-com.google.protobuf:protobuf-java:2.5.0
| | +-org.apache.hadoop:hadoop-mapreduce-client-common:2.2.0
| | | +-com.google.protobuf:protobuf-java:2.5.0
| | | +-org.apache.hadoop:hadoop-mapreduce-client-core:2.2.0
| | | | +-com.google.protobuf:protobuf-java:2.5.0
| | | | +-org.apache.hadoop:hadoop-yarn-common:2.2.0 (VIA PARENT org.apache.hadoop:hadoop-yarn:2.2.0 and then VIA ITS PARENT org.apache.hadoop:hadoop-project:2.2.0)
| | | | | +-com.google.inject:guice:3.0
...
spark-core
pom.xml
はhereです。
hadoop-yarn-common
pom.xml
はhereです。
hadoop-yarn
pom.xml
は、hereです。
hadoop-project
pom.xml
は、hereです。
pom.xmlの参照はありますか?私はクラスパスが混乱していると思っています。 –
Lol私はguice自体に依存するpom.xmlを見つけることができません。困惑しています。しかし、私が "spark-core" v1.5.2を依存関係として使用してfat jarファイルを作成した場合、Guice 3.0が含まれていることがわかります(前の結論を得た理由)。私はより多くの情報を持っていれば私はあなたに戻ってきます、なぜそれが起こるのか理解しています。 – mauriciojost
http://stackoverflow.com/questions/36320695/guice-dependency-is-transitively-pulled-without-explicit-dependency – mauriciojost