Play!Framework + Heroku:无法找到资产

时间:2014-04-16 21:28:58

标签: git heroku playframework-2.0

我尝试将我的Pl​​ay!Framework部署到Heroku,但我遇到以下错误:

app[web.1]: [error] application - Error reading filename: create_user.json
app[web.1]: [error] application - Error reading filename: delete_user.json
app[web.1]: [error] application - Error reading filename: login_user.json
...

我使用这些.json文件作为模式来验证来自客户端的输入。它们位于&app.93 / app / assets / json /'目录。 我猜他们根本没被推到Heroku,但我也不知道如何检查它。

我看到类似的问题,其中缺少的文件位于' public'目录,这样一个' git add -A'会解决问题:

Scala Play 2.1.0 - Assets not appearing on Heroku?

但是,它不适用于我的问题。

其他信息:播放2.2.2,MongoHQ,仅限服务器端。

提前感谢!

修改

stacktrace向我显示应用程序正在

中查找json文件
/app/target/universal/stage/app/assets/json/

其中 / app 对应Heroku dyno中应用程序的默认根目录(使用&#39; heroku run bash&#39;进行检查), / target / universal / stage < / strong>在我的Procfile中定义,其余路径 / app / assets / json 是我的开发环境中的正确层次结构。显然,上面的路径并不存在于Heroku上。

我使用以下方法获取json文件:

Play.application().getFile("app/assets/json/create_user.json");

在开发环境中工作,但不在生产环境中工作。我也不知道如何在生产中访问这些文件。

1 个答案:

答案 0 :(得分:4)

事实证明,玩!不允许在生产模式下进行此类操作

Play.application().getFile("app/assets/json/create_user.json");

据James Roper所说,here“在Play中依赖文件系统是不好的做法”

相反,应该在“公共”文件夹的“conf”中提供该文件,并将其作为资源加载。这些文件嵌入在打包的应用程序中。

由于他的解决方案是在Scala中,并且我已经找到了旧的Play!Framework 1.X的一些解决方案,我决定用Play发布实际上对我有用的内容! 2.2.2和Java 1.7:

Play.application().classloader().getResourceAsStream("json/create_user.json");

我的.json文件位于'conf / json'。