在多项目设置中为sbt控制台加载正确的依赖项,从而导致derby安全异常 [英] loading the right dependencies for sbt console in multi project setup causing derby security exception

查看:123
本文介绍了在多项目设置中为sbt控制台加载正确的依赖项,从而导致derby安全异常的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个概述了 https://github.com的SBT多项目设置/geoHeil/sf-sbt-multiproject-dependency-problem ,并希望能够在根项目中执行sbt console.

I have a SBT multi project setup outlined https://github.com/geoHeil/sf-sbt-multiproject-dependency-problem and want to be able to execute sbt console in the root project.

执行时:

import org.apache.spark.sql.SparkSession
val spark = SparkSession.builder().master("local[*]").enableHiveSupport.getOrCreate
spark.sql("CREATE database foo")

在根控制台中,错误是:

in the root console the error is:

java.lang.NoClassDefFoundError: Could not initialize class org.apache.derby.jdbc.EmbeddedDriver

奇怪的是,它在子项目中也能正常工作:

Strangely, it works just fine in the sub project:

sbt
project common
console

,然后粘贴相同的代码.

and now pasting the same code.

  • 如何修复sbt控制台以直接加载正确的依赖项?
  • 如何直接从子项目中加载控制台? sbt common/console似乎无法解决问题.

以下最重要的设置:

lazy val global = project
  .in(file("."))
  .settings(
    settings,
    libraryDependencies ++= commonDependencies
  )
  .aggregate(
    common
  )
  .dependsOn(
    common
  )

lazy val common = project
  .settings(
    name := "common",
    settings,
    libraryDependencies ++= commonDependencies
  )

lazy val dependencies =
  new {
    val sparkV    = "2.3.0"

    val sparkBase           = "org.apache.spark" %% "spark-core"                 % sparkV % "provided"
    val sparkSql            = "org.apache.spark" %% "spark-sql"                  % sparkV % "provided"
    val sparkHive           = "org.apache.spark" %% "spark-hive"                 % sparkV % "provided"
  }

lazy val commonDependencies = Seq(
  dependencies.sparkBase,
  dependencies.sparkHive,
  dependencies.sparkSql
)

lazy val settings = commonSettings
lazy val commonSettings = Seq(
  fork := true,
  run in Compile := Defaults
    .runTask(fullClasspath in Compile, mainClass.in(Compile, run), runner.in(Compile, run))
    .evaluated
)

相关问题

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆