从 cloudfoundry 任务命令访问 java 可执行文件(cf run-task)

bal*_*teo 4 cloud-foundry buildpack

我需要 java 可执行文件来从cloudfoundry 任务命令运行 java -jar 。

这是我尝试运行任务的方法:

cf run-task bignibou-batch "java -jar bignibou-batch/build/libs/bignibou-batch.jar"
Run Code Online (Sandbox Code Playgroud)

这是我收到的错误消息:

2016-12-24T12:53:30.002+01:00 [APP/TASK/358e02df/0] [ERR] bash: java: command not found
Run Code Online (Sandbox Code Playgroud)

我的清单使用 java buildpack 如下(见bignibou-batch底部的应用程序):

---
buildpack: https://github.com/cloudfoundry/java-buildpack.git
memory: 1024M
env:
  APPLICATION_URL: http://bignibou-server.cfapps.io/
  APPLICATION_MAIL_NO_REPLY_ADDRESS: balteo@bignibou-server.cfapps.io
  SPRING_PROFILES_ACTIVE: cloud

applications:
  - name: bignibou-server
    path: bignibou-server/build/libs/bignibou-server.jar
    env:
      APPLICATION_GOOGLE_API_KEY: *******************
  - name: bignibou-batch
    path: bignibou-batch/build/libs/bignibou-batch.jar
    no-hostname: true
    no-route: true
    env:
      JAVA_OPTS: -Dspring.batch.job.names=messagesDigestMailingJob
Run Code Online (Sandbox Code Playgroud)

编辑:当我尝试按如下方式设置 java buildpack 的位置时:

cf run-task bignibou-batch "$PWD/.java-buildpack/open_jdk_jre/bin/java -jar bignibou-batch/build/libs/bignibou-batch.jar"
Run Code Online (Sandbox Code Playgroud)

$PWD发送命令之前,变量在我的本地机器上解析......

Ben*_*ale 5

通常,我们会考虑已安装 JRE 的位置,以及运行应用程序所需的命令,这是一个内部细节,可以在没有兼容性限制的情况下进行更改。据我所知(运行 Java Buildpack 团队近四年),两者都没有要求安装 Droplet 的合同义务/home/vcap,这就是我们$PWD在命令中非常小心地使用的原因。

其他基于 Java 的任务的早期用户已经允许完全进行分段(这将确保诸如内存计算之类的事情并JAVA_OPTS正确放置在命令中),然后无需修改即可使用该命令行。

您所看到的$PWD尽早解决的问题是逃避比其他任何事情都重要。您可能应该进行的第一个更改是从双引号 ( ")切换到单引号 ( '),这应确保$不会立即解决。有可能在管道中的其他地方,环境再次提前解决,可能需要\$逃跑,但我会推迟,直到你确定你看到了它。