我已经设置了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应用程序,并且所有环境变量都是相同的。
有什么问题?
答案 0 :(得分:8)
我有同样的问题,如果其他人想知道,这就是Heroku告诉我的:
默认情况下,配置变量在以下时不可用 应用程序是在运行时编译的。
您可以通过确保拥有最新的heroku gem来更改此设置 安装,然后启用user_env_compile实验室标志
$ heroku labs:enable user-env-compile
这将使gem安装时JAVA_HOME可用,希望如此 让你超越这个问题。
答案 1 :(得分:5)
首先使用
查找JAVA_HOME PATHheroku 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