Scala Jar, упакованный сборкой sbt, не считывает относительный путь к файлу, но работает в intelliJ - PullRequest
0 голосов
/ 12 марта 2020

Я столкнулся с этой интересной проблемой в scala sbt. Буду очень признателен за любую помощь.

Я прочитал файл следующим образом

 CSVReader.open(new File(getClass.getResource("/sampleData/sample.csv").getPath))
 CSVReader.open(new File("src/main/resources/sampleData/sample.csv"))

Это прекрасно работает в intellij, но не работает в jar

В Intellij он не читает файл для следующего

CSVReader.open(new File(getClass.getResource("/sampleData/sample.csv").getPath))

файл присутствует внутри src / main / resources /

Но это не работает при сборке с использованием

sbt cleam assemble

и затем попробуйте дать

java java -jar /Users/sample/target/scala-2.11/Sample-assembly-1.0.jar

Тогда я получу следующее исключение

Exception in thread "main" java.io.FileNotFoundException: file:/Users/sample/target/scala-2.11/Sample-assembly-1.0.jar!/sampleData/sample.csv (No such file or directory)
    at java.io.FileInputStream.open0(Native Method)
    at java.io.FileInputStream.open(FileInputStream.java:195)
    at java.io.FileInputStream.<init>(FileInputStream.java:138)

1 Ответ

1 голос
/ 13 марта 2020

Чтобы получить файл из папки ресурсов, используйте следующий код:

val reader =CSVReader.open(scala.io.Source.fromInputStream(getClass.getResourceAsStream("/sample.csv")))
println(reader.all())

Я использовал эту библиотеку CSVReader .

...