【问题标题】:Compile Error when killing topology from storm bolt programatically: object and package with same name以编程方式从风暴螺栓中杀死拓扑时编译错误:对象和包具有相同的名称
【发布时间】:2018-12-31 18:19:41
【问题描述】:

我正在寻找如何在我的 scala 项目中的风暴 1.2.1 中从风暴螺栓中终止拓扑。 从这个answer,我写了下面的代码来做到这一点:

  private def shutTopology(){
    import org.apache.storm.utils.Utils
    import org.apache.storm.utils.NimbusClient
    val conf = Utils.readStormConfig
    val nimbusClient = 
NimbusClient.getConfiguredClient(conf).getClient
    nimbusClient.deactivate(topology_name)
  }

但它给出了以下错误:val conf = Utils.readStormConfig,如何解决这个问题?

错误:(46, 17) 包守护进程包含同名的对象和包:nimbus

其中一个需要从类路径中删除

val conf = Utils.readStormConfig

我通过sbtmvn 编译得到了上述错误。我看到了一些关于这个 here 的描述,但对于如何解决这个问题没有太多帮助。

编辑:

基于答案here,我能够使用以下scalac 选项在sbt 中编译它:

"-Yresolve-term-conflict:object"

我仍然无法完成此操作,如何在使用 maven 编译时解决此错误。

【问题讨论】:

    标签: scala maven compiler-errors sbt apache-storm


    【解决方案1】:

    根据here 的回答,我能够使用以下 scalac 选项在 sbt 中编译它:

    "-Yresolve-term-conflict:object"
    

    为了使用 maven 编译它,我按照建议 here 对 pom.xml 进行了以下更改:

    <configuration>
          <scalaVersion>${scala.version}</scalaVersion>
          <args>
            <arg>-Yresolve-term-conflict:object</arg> //this was added
          </args>
          <jvmArgs>
            <jvmArg>-Xms2048m</jvmArg>
            <jvmArg>-Xmx4096m</jvmArg>
          </jvmArgs>
    </configuration>
    

    【讨论】:

      猜你喜欢
      • 2014-01-14
      • 2018-06-09
      • 2018-07-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多