2014-04-26 70 views
0

查看下面的代码片段。SBT无法正确识别自己的类路径

这是我的超简单的应用程序:

object EchoServer extends App { 

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

} 

以上代码做的事情是应该做的:从reference.conf采取显示器的配置(可在阿卡 - 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! 为什么?以及如何处理它?

我打算从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 

回答

0

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

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