当运行创建spark上下文的单元测试时,我得到java.lang.SecurityException
。我明白原因是什么,但不知道如何追踪如何解决它。这是多个依赖关系共享具有不同签名者信息的相同包javax.servlet
。
// 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.jetty
和javax.servlet
的排除规则,但似乎没有一个适用于我。
当我在构建的spark-submit
jar上使用sbt assembly
时,它工作文件,我只是不能为它编写测试。
答案 0 :(得分:1)
好的,弄明白了这个问题。事实证明,导致问题的依赖树实际上是我的测试依赖项,而不是运行时依赖项。
更新到以下内容已解决了该问题。
type Armour =
{name: string;
aVal: float;
dType: DamType;
info: string;
iSpace: int;
hidden: bool;}
type Weapon =
{name: string;
dVal: float;
我已经在github上更新了示例。