Как получить доступ к ресурсу при запуске SBT runTask? - PullRequest
3 голосов
/ 26 июня 2011

У меня есть XML-файл, который мне нужно прочитать из пути к классам, чтобы загрузить некоторые тестовые данные для моего проекта с DBUnit при запуске пользовательского runTask в SBT.

Файл XML находится в / src / main / resources и правильно копируется в /target/scala_2.8.1/classes во время сборки, но я получаю исключение MalformedURLException при попытке получить к нему доступ.

Странно то, что я могу получить доступ к файлу, когда эта функция загрузки данных была частью моих модульных тестов в спецификации Scala.

Есть идеи?

Ответы [ 2 ]

1 голос
/ 12 февраля 2012

В моем случае проблема заключалась в том, что я использовал getClass.getResourceAsStream () в раннем инициализаторе.Пришлось явно указать класс с помощью Class.forName (), чтобы решить его: Class.forName(<class name>).getResourceAsStream("/data.xml")

0 голосов
/ 26 июня 2011

Если в сообщении об ошибке указано, что 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
}
...