jhipster - 将应用程序部署到 Heroku 后无法运行本地开发配置文件

Posted

技术标签:

【中文标题】jhipster - 将应用程序部署到 Heroku 后无法运行本地开发配置文件【英文标题】:jhipster - can't run local dev profile after deploying app to Heroku 【发布时间】:2015-08-05 04:23:40 【问题描述】:

使用 jhipster 生成器后,我可以使用本地 PostgresQL 在本地网络服务器上成功运行应用程序。我也设法将它部署到 Heroku,但是现在当我尝试在 IntelliJ 中本地运行它时(正如我在部署之前所做的那样),(选择“开发配置文件”,单击 spring-boot:run)或运行应用程序主方法, 我收到以下错误(未配置 Heroku 数据库 url):

    ... 123 common frames omitted
Caused by: org.springframework.context.ApplicationContextException: Heroku database URL is not configured, you must set --spring.datasource.heroku-url=$DATABASE_URL
    at com.mycompany.myapp.config.HerokuDatabaseConfiguration.dataSource(HerokuDatabaseConfiguration.java:62) ~[classes/:na]
    at com.mycompany.myapp.config.HerokuDatabaseConfiguration$$EnhancerBySpringCGLIB$$dbf295a9.CGLIB$dataSource$0(<generated>) ~[spring-core-4.1.6.RELEASE.jar:na]
    at com.mycompany.myapp.config.HerokuDatabaseConfiguration$$EnhancerBySpringCGLIB$$dbf295a9$$FastClassBySpringCGLIB$$fa41e789.invoke(<generated>) ~[spring-core-4.1.6.RELEASE.jar:na]
    at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:228) ~[spring-core-4.1.6.RELEASE.jar:4.1.6.RELEASE]
    at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:309) ~[spring-context-4.1.6.RELEASE.jar:4.1.6.RELEASE]
    at com.mycompany.myapp.config.HerokuDatabaseConfiguration$$EnhancerBySpringCGLIB$$dbf295a9.dataSource(<generated>) ~[spring-core-4.1.6.RELEASE.jar:na]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_45]
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_45]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_45]
    at java.lang.reflect.Method.invoke(Method.java:497) ~[na:1.8.0_45]
    at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:162) ~[spring-beans-4.1.6.RELEASE.jar:4.1.6.RELEASE]
    ... 124 common frames omitted
Exception in thread "main" org.springframework.context.ApplicationContextException: Unable to start embedded container; nested exception is org.springframework.boot.context.embedded.EmbeddedServletContainerException: Unable to start embedded Tomcat
    at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.onRefresh(EmbeddedWebApplicationContext.java:133)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:474)
    at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:118)
    at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:686)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:320)
    at com.mycompany.myapp.Application.main(Application.java:72)
Caused by: org.springframework.boot.context.embedded.EmbeddedServletContainerException: Unable to start embedded Tomcat
    at org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainer.initialize(TomcatEmbeddedServletContainer.java:98)
    at org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainer.<init>(TomcatEmbeddedServletContainer.java:75)
    at org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory.getTomcatEmbeddedServletContainer(TomcatEmbeddedServletContainerFactory.java:378)
    at org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory.getEmbeddedServletContainer(TomcatEmbeddedServletContainerFactory.java:155)
    at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.createEmbeddedServletContainer(EmbeddedWebApplicationContext.java:157)
    at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.onRefresh(EmbeddedWebApplicationContext.java:130)
    ... 5 more

请原谅我的 n00bness .. 这是设计使然还是我错过了一些步骤?

【问题讨论】:

【参考方案1】:

从日志的第一行开始,Heroku 数据库 URL 未配置

Caused by: org.springframework.context.ApplicationContextException: Heroku database URL is not configured, you must set --spring.datasource.heroku-url=$DATABASE_URL 希望以下示例对您有所帮助:

https://github.com/jhipster/generator-jhipster/blob/master/heroku/templates/src/main/java/package/config/_HerokuDatabaseConfiguration.java

【讨论】:

对,在开发模式下运行 HerokuDatabaseConfiguration 会失败是有道理的,因为 DATABASE_URL 是由 Heroku (devcenter.heroku.com/articles/…) 配置的,所以它应该只在生产中工作。我刚刚做了一个测试,为了让应用程序在开发模式下运行而不会导致上述错误,我只需删除 HerokuDatabaseConfiguration 文件,然后 DatabaseConfiguration 中的 OnConditional 将导致正常的开发配置文件运行。【参考方案2】:

是因为this error,最新版本已经修复。

【讨论】:

以上是关于jhipster - 将应用程序部署到 Heroku 后无法运行本地开发配置文件的主要内容,如果未能解决你的问题,请参考以下文章

将 JHipster 项目部署到 tomcat 服务器

JHipster - 在 AWS Beanstalk 中发布部署 Jhipster 注册表

Jhipster部署到Heroku返回404

Jhipster 上的 ERR_SSL_VERSION_OR_CIPHER_MISMATCH

Yeoman 构建的 Angular 应用程序未将引导字体部署到 Heroku

Jhipster:存储上传文件的位置?