访问生产播放服务器中的数据文件

时间:2014-12-01 22:43:57

标签: scala playframework

我有一个Play in Scala应用程序,其目录结构如下所示:

  • 应用
  • CONF
  • 数据< - 手动添加
  • 日志
  • 项目
  • 公共
  • 测试

我手动添加的数据目录,它包含应用程序所依赖的许多JSON文件。在代码中掌握它们似乎很容易,并且当我运行" play run"时效果很好。这是我用来引用它们的代码:

val projectRoot = Play.application.path.getAbsolutePath
val statFiles = new File(projectRoot + "/data/"+tier+"/usage").listFiles

但是,当我跑步时,开始播放"我得到NullPointerExceptions,堆栈跟踪如下所示:

Caused by: java.lang.NullPointerException: null
at scala.collection.mutable.ArrayOps$ofRef$.length$extension(ArrayOps.scala:192) ~[org.scala-lang.scala-library-2.11.1.jar:na]
at scala.collection.mutable.ArrayOps$ofRef.length(ArrayOps.scala:192) ~[org.scala-lang.scala-library-2.11.1.jar:na]
at scala.collection.SeqLike$class.size(SeqLike.scala:106) ~[org.scala-lang.scala-library-2.11.1.jar:na]
at scala.collection.mutable.ArrayOps$ofRef.size(ArrayOps.scala:186) ~[org.scala-lang.scala-library-2.11.1.jar:na]
at scala.collection.mutable.Builder$class.sizeHint(Builder.scala:69) ~[org.scala-lang.scala-library-2.11.1.jar:na]

我的猜测是,在设置生产应用程序的方式中,以相同方式引用文件的能力会丢失。但是,从堆栈跟踪中看并不完全明显......我想知道这是否可能是因为我已经添加了这个数据目录而没有正确构建它,如果是这样的话解决它。

1 个答案:

答案 0 :(得分:1)

默认情况下,

数据文件夹不会复制到目标文件夹。

你可以解决这个问题的方法很少:

  1. 数据移至 conf 文件夹并使用新文件访问它(" conf / data" + tier +" / usage&#34 ;)
  2. Sbt可以使用
  3. 将非托管资源目录添加到您的生产版本中
      

    编译中的unmanagedResourceDirectories + = baseDirectory.value /   "数据"

    您可以在http://www.scala-sbt.org/0.13/docs/Howto-Customizing-Paths.html

    上阅读更多内容