本文介绍了从 Cloudbees 上的“/conf"目录加载文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我们在 Cloudbees 上运行 Play2 应用程序,并从/conf"目录(在应用程序的类路径中)加载一个文件.

We run Play2 application on Cloudbees and we load a file from '/conf' directory (inside the classpath of the application).

这 2 个片段在本地和 heroku 中都有效

These 2 snippets work in local and at heroku

Play.application().getFile("conf/myfile.json")

new File("conf/myfile.json")

然而,在 Cloudbees 上,我们得到 FileNotFoundException :

java.io.FileNotFoundException: /var/genapp/apps/..../conf/myfile.json (No such file or directory)

那么如何从 Cloudbees 上的类路径加载文件?

So how to load a file from classpath on Cloudbees?

推荐答案

好吧,'/conf' 中的文件在类路径中而不是在文件系统中,所以我们需要以这种方式加载文件:

Well, files in '/conf' are in the classpath and not on the filesystem so we need to load the file this way :

Play.application.resourceAsStream("myfile.json")
//.resource() also works - depends what we want

请注意,我们没有将conf"放在路径中 - 那里的文件位于根目录的类路径中.

请注意,在生产中,它来自 jar/zip,而不是文件 - 因此 getFile 在游戏中有些误导.

Note that in production it comes from a jar/zip, not a file - so getFile is somewhat misleading in play.

来自 Cloudbees 的 Michael Neale 打开了这个问题:https://github.com/playframework/Play20/issues/1079

Michael Neale from Cloudbees opened this issue : https://github.com/playframework/Play20/issues/1079

Cloudbees 文档已更新:https://wiki.cloudbees.com/bin/view/RUN/Playframework#HLoadingconfigfilesinproduction

Cloudbees documentation has been updated : https://wiki.cloudbees.com/bin/view/RUN/Playframework#HLoadingconfigfilesinproduction

这篇关于从 Cloudbees 上的“/conf"目录加载文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

05-19 22:09