问题描述
我们在 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"目录加载文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!