无法使用RJB gem将应用程序部署到Heroku

时间:2012-03-22 13:42:12

标签: heroku java-home rjb

我已经设置了JAVA_HOME变量

heroku config:add JAVA_HOME=/usr/lib/jvm/java-6-openjdk

检查heroku配置是否显示带有值的变量, 然后推了:

git push heroku master

仍然得到

JAVA_HOME is not set
捆绑器安装RJB gem时出现

错误。

我可以成功地将相同的源部署到另一个Heroku应用程序,并且所有环境变量都是相同的。

有什么问题?

5 个答案:

答案 0 :(得分:8)

我有同样的问题,如果其他人想知道,这就是Heroku告诉我的:

  

默认情况下,配置变量在以下时不可用   应用程序是在运行时编译的。

     

您可以通过确保拥有最新的heroku gem来更改此设置   安装,然后启用user_env_compile实验室标志

     

$ heroku labs:enable user-env-compile

     

这将使gem安装时JAVA_HOME可用,希望如此   让你超越这个问题。

答案 1 :(得分:5)

首先使用

查找JAVA_HOME PATH
heroku run 'which java |xargs  readlink -f  | sed "s:bin/java::"'

它将归还你,

usr/lib/jvm/java-6-openjdk/jre

现在使用它来了解heroku上的JAVA_HOME路径。现在在heroku和Gemfile中设置JAVA_HOME路径

on heroku cli:

heroku config:add JAVA_HOME=/usr/lib/jvm/java-6-openjdk

在Gemfile的顶部:

java_home = '/usr/lib/jvm/java-6-openjdk'
ENV['JAVA_HOME'] = java_home if Dir.exist?(java_home)

答案 2 :(得分:2)

让Heroku通过在我的Gemfile中添加以下内容来安装依赖于$ JAVA_HOME的gem:

# set JAVA_HOME so Heroku will install gems that need it
heroku_java_home = '/usr/lib/jvm/java-6-openjdk'
ENV['JAVA_HOME'] = heroku_java_home if Dir.exist?(heroku_java_home)

答案 3 :(得分:1)

您是否尝试将应用部署到其他堆栈?

我做了一点搜索,这似乎符合您的解释。 https://github.com/carlhuda/bundler/issues/1742

可能是你的报告,不是吗?

我建议你联系Heroku并让他们调查一下。

似乎它缺少可能在当前堆栈中不可用的依赖项。

答案 4 :(得分:0)

从heroku cedar-14迁移到heroku-16或heroku-18

$ heroku config:unset JAVA_HOME #remove JAVA_HOME env if exists
$ heroku stack:set heroku-18
$ heroku buildpacks:add --index 1 heroku/jvm
$ git push heroku master