我已经设置了 JAVA_HOME 变量
heroku config:add JAVA_HOME=/usr/lib/jvm/java-6-openjdk
检查 heroku 配置是否显示此变量的值,然后推送:
git push heroku master
仍然得到
JAVA_HOME is not set
bundler 安装 RJB gem 时出错。
我可以成功地将相同的源部署到另一个 Heroku 应用程序,并且所有环境变量都是相同的。
怎么了?
我有同样的问题,如果其他人想知道,这就是 Heroku 告诉我的:
默认情况下,编译应用程序时配置变量不可用 - 仅在运行时可用。
您可以通过确保安装最新的 heroku gem 来更改此设置,然后启用 user_env_compile 实验室标志
$ heroku labs:enable user-env-compile
这将使 JAVA_HOME 在 gem 安装时可用,希望能帮助您解决这个问题。
首先通过使用找到 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 路径
在 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)
通过将以下内容添加到我的 Gemfile 中,让 Heroku 安装依赖于 $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)
您是否尝试过将您的应用程序部署到不同的堆栈?
我做了一些搜索,这似乎符合你的解释。 https://github.com/carlhuda/bundler/issues/1742
可能是你的报告,不是吗?
我建议您联系 Heroku 并要求他们进行调查。
似乎缺少依赖项,这些依赖项可能在您当前的堆栈上不可用。
从 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