【问题标题】:Scala JAR File : Efficient way to read data from file in jar [duplicate]Scala JAR文件:从jar文件中读取数据的有效方法[重复]
【发布时间】:2020-11-01 08:16:49
【问题描述】:

我已经编写了从文件中读取一些数据的 Scala 程序。

lazy val vectorOptF2 = Source.fromFile("DataFiles/F2-xopt.txt").getLines().map(_.toDouble). toList

当我在 IntelliJ IDEA IDE 中执行我的代码时,它运行成功。但是当我创建 JAR 文件时

mvn clean packae

并试图执行 JAR 文件,它会抛出错误,说明找到了这样的文件。

Exception in thread "main" java.io.FileNotFoundException: DataFiles/F2-xopt.txt (No such file or directory)

我已创建 ZIP 文件 DataFiles.zip 并将其移动到 JAR 文件中

mv DataFiles.zip MyJar.jar

但同样是错误。 如何从 JAR 文件中文件夹中的文件中读取数据?

  • 侧文件夹DataFiles中有多个文件,每次程序执行时都必须根据指定的条件读取其中一些文件。

【问题讨论】:

  • 如果文件在JAR中,它不再是文件而是资源,你需要类似:Source.fromInputStream(Thread.currentThread.getContextClassLoader.getResourceAsStream("foo/bar"))

标签: java scala maven jar


【解决方案1】:

如果您遵循 EAR 结构, 在src/main/resources/目录中创建相应的目录结构后添加您的数据文件并使用以下代码读取它。

lazy val vectorOptF2 = Source.fromResource
("DataFiles/F2-xopt.txt").getLines().map(_.toDouble). toList

【讨论】:

猜你喜欢
  • 2016-08-04
  • 1970-01-01
  • 2013-07-05
  • 2019-09-26
  • 2011-10-11
  • 1970-01-01
  • 2012-10-09
  • 2017-11-08
  • 2014-05-24
相关资源
最近更新 更多