在本地(在 Windows 上)开发我的测试应用时,我的应用运行良好,没有任何问题。
在部署到 heroku(使用 git)并调用特定的 GET 之后,我收到了一个错误。花了很多时间尝试调试问题 - 无法在本地重现,我找到了导致它的区域(通过注释/取消注释代码区域)
这是在 heroku 上不起作用的代码:
public static void compose(){
compose("");
}
public static void compose(String content){
render(content);
}
将上面的内容更改为:
public static void compose(){
String content = "";
renderTemplate("Application/compose.html",content);
}
public static void compose(String content){
renderTemplate("Application/compose.html",content);
}
该应用程序在 heroku 上运行良好
这是异常(从第一个代码段生成的异常)
Internal Server Error (500) for request GET /compose
2012-03-03T10:37:14+00:00 app[web.1]: @69hmkdf00
2012-03-03T10:37:14+00:00 app[web.1]:
2012-03-03T10:37:14+00:00 app[web.1]: Oops: UnexpectedException
2012-03-03T10:37:14+00:00 app[web.1]: An unexpected error occured caused by exception UnexpectedException: Unexpected Error
2012-03-03T10:37:14+00:00 app[web.1]: play.exceptions.UnexpectedException: Unexpected Error
2012-03-03T10:37:14+00:00 app[web.1]:
2012-03-03T10:37:14+00:00 app[web.1]: at play.vfs.VirtualFile.contentAsString(VirtualFile.java:180)
2012-03-03T10:37:14+00:00 app[web.1]: at play.templates.TemplateLoader.load(TemplateLoader.java:69)
2012-03-03T10:37:14+00:00 app[web.1]: at play.templates.TemplateLoader.load(TemplateLoader.java:172)
2012-03-03T10:37:14+00:00 app[web.1]: at play.mvc.Controller.renderTemplate(Controller.java:640)
2012-03-03T10:37:14+00:00 app[web.1]: at play.mvc.Controller.render(Controller.java:695)
2012-03-03T10:37:14+00:00 app[web.1]: at play.mvc.Controller.renderTemplate(Controller.java:659)
2012-03-03T10:37:14+00:00 app[web.1]: at controllers.Application.compose(Application.java:92)
2012-03-03T10:37:14+00:00 app[web.1]: at play.mvc.ActionInvoker.invokeWithContinuation(ActionInvoker.java:548)
2012-03-03T10:37:14+00:00 app[web.1]: at play.mvc.ActionInvoker.invoke(ActionInvoker.java:502)
2012-03-03T10:37:14+00:00 app[web.1]: at play.mvc.ActionInvoker.invokeControllerMethod(ActionInvoker.java:478)
2012-03-03T10:37:14+00:00 app[web.1]: at play.mvc.ActionInvoker.invokeControllerMethod(ActionInvoker.java:473)
2012-03-03T10:37:14+00:00 app[web.1]: at play.mvc.ActionInvoker.invoke(ActionInvoker.java:161)
2012-03-03T10:37:14+00:00 app[web.1]: at Invocation.HTTP Request(Play!)
2012-03-03T10:37:14+00:00 app[web.1]: at play.vfs.VirtualFile.inputstream(VirtualFile.java:111)
2012-03-03T10:37:14+00:00 app[web.1]: at play.vfs.VirtualFile.contentAsString(VirtualFile.java:178)
2012-03-03T10:37:14+00:00 app[web.1]: Caused by: play.exceptions.UnexpectedException: Unexpected Error
2012-03-03T10:37:14+00:00 app[web.1]: ... 12 more
2012-03-03T10:37:14+00:00 app[web.1]: Caused by: java.io.FileNotFoundException: /app/app/views (Is a directory)
2012-03-03T10:37:14+00:00 app[web.1]: at java.io.FileInputStream.<init>(FileInputStream.java:137)
2012-03-03T10:37:14+00:00 app[web.1]: at java.io.FileInputStream.open(Native Method)
2012-03-03T10:37:14+00:00 app[web.1]: ... 13 more
2012-03-03T10:37:14+00:00 app[web.1]: at play.vfs.VirtualFile.inputstream(VirtualFile.java:109)
路由文件相关行
* /compose Application.compose
我的问题是
- 我做错了什么(以及为什么我做的更改修复了它)?
- 为什么它不能在本地复制?
最佳答案
上面的代码应该可以正常工作,如果你改变它;
public static void compose(){
String a = "";
compose(a);
}
public static void compose(String content){
render(content);
}
因为它需要在渲染 HTML 之前为空字符串保留一些内存。
关于heroku - Play Framework 重定向错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9546399/