首页 > 解决方案 > 对象工具不是包 scala 的成员

问题描述

在我的 spark 应用程序中,我正在尝试使用它,我必须在我的 这些是我添加的 2 行fluentd-scala-logger中包含一个额外的依赖项:build.sbtbuild.sbt

resolvers += "Apache Maven Central Repository" at "https://repo.maven.apache.org/maven2/"
"org.fluentd" %% "fluent-logger-scala" % "0.7.0"

我的最终build.sbt看起来像这样:

name := "sample"
version := "1.4"
scalaVersion := "2.11.8"
resolvers += "Apache Maven Central Repository" at "https://repo.maven.apache.org/maven2/"
libraryDependencies ++= Seq("org.elasticsearch" %% "elasticsearch-spark" % "2.1.2", "org.apache.spark" %% "spark-sql" % "2.1.2", "org.apache.kafka" % "kafka-clients" % "2.4.1", "org.fluentd" %% "fluent-logger-scala" % "0.7.0")

一旦我sbt打包将我的 Spark 应用程序捆绑在一个 jar 中,我就会遇到以下问题:

object tools is not a member of package scala
[error] import scala.tools.nsc.io.File

sbt当我的早期看起来像这样(没有流利的依赖)时,我没有面对这个:

name := "sample"
version := "1.4"
scalaVersion := "2.11.8"
libraryDependencies ++= Seq("org.elasticsearch" %% "elasticsearch-spark" % "2.1.2", "org.apache.spark" %% "spark-sql" % "2.1.2", "org.apache.kafka" % "kafka-clients" % "2.4.1")

解析器线路是否导致问题?还是我完全错过了其他东西。我正在使用sbt版本 1.4.5 和 Scala 版本:2.11.8

标签: javascalaapache-sparksbtfluentd

解决方案


我不确定是什么原因造成的,但我找到了解决方案。请尝试像这样添加依赖项:

libraryDependencies += "org.fluentd" %% "fluent-logger-scala" % "0.7.0" intransitive()

它将导入此依赖项而不导入其依赖项。

话虽如此,我查看了这个库依赖项,并尝试将它们一一排除:

libraryDependencies += "org.fluentd" %% "fluent-logger-scala" % "0.7.0" excludeAll(
  ExclusionRule("org.msgpack", "msgpack"),
  ExclusionRule("org.slf4j", "slf4j-api"),
  ExclusionRule("ch.qos.logback", "logback-classic"),
  ExclusionRule("junit", "junit"),
  )

但它没有用。所以我真的无法解释。


推荐阅读