JAVA_HOME 在 Cloud Foundry 部署中找不到

JAVA_HOME not found in Cloud Foundry deployment

我正在尝试使用 Pivotal 的 PCF Dev 进行 Cloud Foundry 开发。

我想设置我的简单的独立 jar 文件,它每秒只输出 hello。我推了它,除了开始之外,一切似乎都正常。

启动时出现以下日志错误:

2016-05-10T13:09:45.28+0200 [APP/0]      ERR bash: JAVA_HOME: No such file or directory

我的manifest.yml

applications:
  - name:    cf-test
    no-route: true
    memory:  128M
    instances: 1
    path: /bin/test.jar
    build: https://github.com/cloudfoundry/java-buildpack.git

对我来说,Java 似乎没有在 CF 环境中正确安装。但是如何调试呢?

真希望有人知道答案:)谢谢!

编辑: 我发现我必须设置 JAVA_HOME 的环境变量,但是设置什么?如何找到 Java 路径?

请参阅 health-check-type attribute

上的文档

Use the health-check-type attribute to set the health_check_type flag to either port or none. If you do not provide a health-check-type attibute, it defaults to port.

---
  ...
  health-check-type: none

The command line option that overrides this attribute is -u.

如果您的进程不像绑定到端口的 Web 应用程序,而只是打印一些日志的后台工作者,请使用 none

这是Cloud Foundry很不友好的一点,默认没有设置$JAVA_HOME

这是我解决这个问题的方法。

  1. 使用 Dist Zip 容器将您的应用程序推送到 CF,这样您就可以依靠构建包本身找到 Java 路径。( https://github.com/cloudfoundry/java-buildpack/blob/master/docs/container-dist_zip.md)

  2. 使用Cloud Foundry的Start Command设置$JAVA_HOME,如: JAVA_HOME=.java-buildpack/open_jdk_jre/bin/

java安装路径直接在构建包下。 /home/vcap/app/.java-buildpack。你用命令行查看你的CF就可以找到。