我有一个XML文件需要从类路径中读取,以便在SBT中运行自定义runTask时使用DBUnit为我的项目加载一些测试数据。
XML文件位于/ src / main / resources中,并在构建期间正确复制到/target/scala_2.8.1/classes,但在尝试访问时遇到MalformedURLException。
奇怪的是,当这个数据加载功能是我的Scala规范单元测试的一部分时,我可以访问该文件。
有什么想法吗?
答案 0 :(得分:1)
在我的情况下,问题是我在早期初始化器中使用了getClass.getResourceAsStream()。必须使用Class.forName()明确指定类来解决它:Class.forName(<class name>).getResourceAsStream("/data.xml")
答案 1 :(得分:0)
如果错误表明网址格式错误,则可能是真的。 这是我用来在测试期间从资源中获取文件的代码:
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
}