2011-06-26 16 views
3

我有一个XML文件,需要从类路径中读取,以便在SBT中运行自定义runTask时,使用DBUnit为我的项目加载一些测试数据。如何在运行SBT runTask时访问资源?

XML文件位于/ src/main/resources中,并在构建过程中正确复制到/target/scala_2.8.1/class,但在尝试访问它时遇到MalformedURLException。

奇怪的是,当这个数据加载功能是我的Scala规格单元测试的一部分时,我可以访问该文件。

任何想法?

+0

那么,你传递的URL是什么? –

回答

0

如果错误提示该URL格式错误,则可能是真的。 下面是我用它来从资源抢档代码测试期间:

def copyFileFromResource(source: String, dest: File) { 
    val in = getClass.getResourceAsStream(source) 
    val reader = new java.io.BufferedReader(new java.io.InputStreamReader(in)) 
    val out = new java.io.PrintWriter(new java.io.FileWriter(dest)) 
    var line: String = null 
    line = reader.readLine 
    while (line != null) { 
    out.println(line) 
    line = reader.readLine 
    } 
    in.close 
    out.flush 
} 
1

在我的情况下,问题是,我早在初始化器使用getClass.getResourceAsStream()。必须用Class.forName()明确指定类来解决它:Class.forName(<class name>).getResourceAsStream("/data.xml")