SBT无法正确识别其自己的类路径

时间:2014-04-26 20:16:12

标签: scala sbt akka

看一下下面的片段。

这是我非常简单的应用程序:

object EchoServer extends App {

  println(com.typesafe.config.ConfigFactory.load())

}

上面的代码执行预期的操作:显示从reference.conf获取的配置(可以在akka-actor.jar中找到)与env变量合并。

现在看看我的Build.scala:

  import sbt._
  import Keys._          
  import com.typesafe.config._

  object Build extends Build {

    println(com.typesafe.config.ConfigFactory.load())

    lazy val XXXProject = Project(
      id = "x-x-x",
      base = file("."),
      settings = Defaults.defaultSettings ++ Seq(
        organization := "a.b.c",
        version := "0.0.1",
        scalaVersion := "2.10.4",
        crossPaths := false
        libraryDependencies ++= Seq (
          "com.typesafe.akka" %% "akka-actor" % "2.3.2",
          "com.typesafe" % "config" % "1.2.0"
        )
      )
    )
  }

此处,启动SBT后,还会显示配置,但它仅包含env变量。它没有解析reference.conf! 为什么?以及如何处理它?<​​/ p>

我打算从SBT内部启动一个ActorSystem,这个问题对我来说是个主要障碍。

我可以做一个解决方法 - 将reference.conf复制到我的项目等,但我正在寻找更优雅的解决方案。

更多关于好奇的数据:

plugins.sbt:

libraryDependencies += "com.typesafe.akka" %% "akka-actor" % "2.3.2"

libraryDependencies += "com.typesafe" % "config" % "1.2.0"

build.properties:

sbt.version=0.13.2

1 个答案:

答案 0 :(得分:0)

所以,我发现我必须使用正确的类加载器(不是SBT提供的):

val classLoader = ActorSystem.getClass.getClassLoader
println(com.typesafe.config.ConfigFactory.load(classLoader))