从CloudBees的“/ conf目录”目录加载文件(Load file from '/c

2019-09-01 11:54发布

我们所做的 :

我们运行的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的文件?

Answer 1:

那么,在“/ 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



Answer 2:

我现在用的打法2.4。 什么工作对我来说是

import play.Play;
import org.apache.commons.io.IOUtils;

  String myfile = IOUtils.toString(Play.application().resourceAsStream("myfile.json"));

注: application()被称为静态方法。



Answer 3:

看来,通过“游戏开始”或“游戏运行”,这是不是发挥应用到生产环境中运行的推荐方式Heroku的运行游戏应用程序 - 这也解释了为什么“的conf”是可见的存在 - 虽然这可能在未来的版本中改变玩。



文章来源: Load file from '/conf' directory on Cloudbees