5

我已经设置了 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 应用程序,并且所有环境变量都是相同的。

怎么了?

4

6 回答 6

8

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

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

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

$ heroku labs:enable user-env-compile

这将使 JAVA_HOME 在 gem 安装时可用,希望能帮助您解决这个问题。

于 2012-03-27T14:04:30.550 回答
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 路径

在 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)
于 2014-06-30T09:47:24.910 回答
2

通过将以下内容添加到我的 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)
于 2013-02-18T23:52:44.470 回答
1

您是否尝试过将您的应用程序部署到不同的堆栈?

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

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

我建议您联系 Heroku 并要求他们进行调查。

似乎缺少依赖项,这些依赖项可能在您当前的堆栈上不可用。

于 2012-03-22T14:00:15.210 回答
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
于 2019-07-03T14:45:29.340 回答
0

要部署到heroku-20堆栈,请确保按此顺序添加以下构建包:

heroku buildpacks:add heroku/jvm
heroku buildpacks:add heroku/ruby

您不需要JAVA_HOME手动设置heroku-20。Heroku 也不会为您设置它。rjb该变量在安装时已经在内部可用。

您的最终结果应如下所示:

在此处输入图像描述

于 2021-11-16T21:39:29.833 回答