我一直在本地使用 Struts2、Hibernate 和 tomcat 开发 Java maven Web 应用程序。我决定在 Heroku 上托管该应用程序,因此我注册并创建了一个新应用程序。然后我使用 git 将我的应用程序推送到 heroku,但每当我访问 url 时,我都会得到:
Application Error
An error occurred in the application and your page could not be served. Please try again in a few moments.
If you are the application owner, check your logs for details.
当我进入应用程序的资源页面时,我意识到没有可用的 dyno 实例,所以我认为这是我的问题。我是否正确,如果是,我该如何创建一个新的并解决这个问题。
更新
我检查日志,收到 H14 - 没有网络进程正在运行。这表明我的应用程序确实没有测功机。所以我尝试使用以下命令添加一个:
heroku ps:scale web=1 --app appname
但我得到“扩展网络进程...失败,没有此类类型有网络”。我该如何解决这个问题?
最佳答案
问题是您的应用程序可能没有应用程序服务器(即它只是没有 Tomcat 的原始 WAR 文件)。要解决此问题,您有几个选择:
- WAR Deployment :这是专门针对 WAR 文件的替代部署流程。您将 WAR 文件上传到 Heroku,Tomcat 将与必要的 Procfile 一起捆绑在一起。您可以使用 CLI 来执行此操作或Eclipse 。这是最简单的,但对高级自定义有一些限制。
- Manually add Webapp Runner to your app 。这需要做更多的工作,因为您必须对 POM 进行更改并创建自己的 Procfile,但它将允许进一步自定义,并让您在本地运行 Webapp Runner 以获得更好的效果dev/prod parity .
- Manually add Jetty Runner to your app 。与上面的想法相同,但是使用 Jetty,我个人发现 Jetty 与 Struts2 应用程序配合使用效果更好。 Here is an example我有一个使用这种方法的 Struts2 应用程序。看看吧POM和 Procfile看看它是如何完成的。
关于java - 新创建的heroku应用程序没有网络测功机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15964479/