2014-04-26 110 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))