2017-12-12 4 views
1

スパークコンテキストを作成するユニットテストを実行すると、java.lang.SecurityExceptionが得られます。私は原因が何であるのか理解していますが、解決方法を突き止める方法はわかりません。これは、異なるパッケージ署名者情報を持つ同じパッケージjavax.servletを共有する複数の依存関係が存在するためです。依存関係が与えられたときにHiveContextをテストしようとすると、java.lang.SecurityExceptionがスローされる

// Dependencies 
libraryDependencies ++= Seq(
    "org.apache.spark" % "spark-hive_2.10" % "1.6.2" % Provided 
) 

// Test dependencies 
libraryDependencies ++= Seq(
    "junit" % "junit" % "4.10" % Test, 
    "org.scalatest" %% "scalatest" % "3.0.4" % Test, 
    "org.apache.hadoop" % "hadoop-minicluster" % "2.5.0" % Test 
) 

私はsample project to demonstrate thisを作成しました。

org.mortonbay.jettyjavax.servletの除外ルールを示唆しているこの同じ問題の例はたくさんありますが、私にとってはうまくいくものはありません。

sbt assembly jarファイルには​​を使用していますが、私はそれをテストすることはできません。

答えて

1

問題を把握しました。問題を引き起こしている依存関係ツリーは、実際にはテスト依存関係にあり、実行時依存関係にはなりません。

次のように更新すると問題が解決しました。

// Test dependencies 
libraryDependencies ++= Seq(
    "junit" % "junit" % "4.10" % Test, 
    "org.scalatest" %% "scalatest" % "3.0.4" % Test, 
    "org.apache.hadoop" % "hadoop-minicluster" % "2.5.0" % Test 
).map(
    _.excludeAll(ExclusionRule(organization = "javax.servlet")) 
) 

githubでサンプルを更新しました。

関連する問題