我们所做的 :
我们运行的CloudBees Play2应用,我们从装载“/ conf目录”目录中的文件(该应用程序的classpath中)。
这些片段2在当地,并在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的文件?
那么,在“/ conf目录”的文件在类路径中,而不是在文件系统中,所以我们需要加载的文件是这样的:
Play.application.resourceAsStream("myfile.json")
//.resource() also works - depends what we want
请注意,我们不把“CONF”的路径-在文件上有根类路径。
需要注意的是在生产它来自一个JAR / ZIP,而不是一个文件 - 这样的GetFile在比赛有点误导。
从CloudBees的迈克尔·尼尔开了这个问题: https://github.com/playframework/Play20/issues/1079
CloudBees的文档已被更新: https://wiki.cloudbees.com/bin/view/RUN/Playframework#HLoadingconfigfilesinproduction
我现在用的打法2.4。 什么工作对我来说是
import play.Play;
import org.apache.commons.io.IOUtils;
String myfile = IOUtils.toString(Play.application().resourceAsStream("myfile.json"));
注: application()
被称为静态方法。
看来,通过“游戏开始”或“游戏运行”,这是不是发挥应用到生产环境中运行的推荐方式Heroku的运行游戏应用程序 - 这也解释了为什么“的conf”是可见的存在 - 虽然这可能在未来的版本中改变玩。