【问题标题】:Could not find and load main class HomeController when deploy to Heroku?部署到 Heroku 时找不到并加载主类 HomeController?
【发布时间】:2016-09-08 10:28:31
【问题描述】:

这是我第一次部署到 Heroku。我试图用 postgreSql 项目部署 Spring MVC。

当我第一次部署到 heroku 时,它说我缺少 Procfile。然后我添加了带有文本的 Procfile,就像 heroku 网站中的示例一样

"web: java -cp target/classes:"target/dependency/*" HomeController"

有“HomeController”。这是 HomeController.java 里面的内容

/**
 * Handles requests for the application home page.
 */
@Controller
public class HomeController {

    private static final Logger logger = LoggerFactory.getLogger(HomeController.class);

    /**
     * Simply selects the home view to render by returning its name.
     */
    @RequestMapping(value = "/", method = RequestMethod.GET)
    public String home() {

        return "home";
    }

}

这是这个控制器将域的根目录直接指向我的 home.html。我有像“co.id.myproject.controller”这样的包,在这里我放了我的“HomeController.java”

然后当我在 heroku 中运行我的应用程序时,它就无法工作了。然后我查看了heroku日志,在cmd“Heroku日志”中使用命令提示符,我发现一条错误消息说

“无法找到或加载主类 HomeController”

我已经在 Procfile 中定义了 HomeController。我在这里错过了什么?

【问题讨论】:

    标签: java spring spring-mvc heroku


    【解决方案1】:

    那里没有main 方法。您必须在 Heroku 的配置文件中使用您的 main 方法指定类。您还必须在运行命令中指定类的完整限定名。

    【讨论】:

    • 怎么做?因为我的应用程序是 Spring MVC。你能给我一个spring mvc的主要方法的例子吗?
    • 如果您不使用 Spring Boot,那么您可能需要一个 Servlet 容器。如果您正在部署 WAR 文件,您应该阅读这篇文章 devcenter.heroku.com/articles/war-deployment
    • 我没有使用 Spring Boot,也没有构建战争来部署到 heroku,我试过了,我认为战争方法已经过时了,因为它不起作用。所以我在我的应用程序的根目录中作为 git 项目提交,然后我推送到 heroku,因为推送是成功的,所以我得到了那个错误
    • 那么你如何运行你的应用程序?您甚至尝试在本地运行它吗?如果是这样,请在 Heroku 上使用相同的方法。
    • 是的,它工作正常。我只是添加到 tomcat 服务器,当我执行我的 localhost:8080/myproject/ 它只是打开我的 index.html 而没有任何错误,我什至尝试发布到 openshift,它也可以工作。我在 heroku 中错过了什么?
    猜你喜欢
    • 2016-08-12
    • 2021-08-02
    • 2023-03-10
    • 1970-01-01
    • 1970-01-01
    • 2012-07-20
    • 1970-01-01
    • 2022-07-05
    • 2019-08-21
    相关资源
    最近更新 更多