2016-12-24 18 views
3

我需要java可執行文件來從cloudfoundry任務命令運行java -jar。從cloudfoundry任務命令(cf run-task)訪問java可執行文件

這裏是我嘗試運行任務:

cf run-task bignibou-batch "java -jar bignibou-batch/build/libs/bignibou-batch.jar" 

以下是錯誤消息我得到:

2016-12-24T12:53:30.002+01:00 [APP/TASK/358e02df/0] [ERR] bash: java: command not found 

我的清單使用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: [email protected] 
    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 

編輯:當我嘗試設置Java buildpack的位置如下:

cf run-task bignibou-batch "$PWD/.java-buildpack/open_jdk_jre/bin/java -jar bignibou-batch/build/libs/bignibou-batch.jar" 

發送的命令之前$PWD變量是我的本地機器上解決...

回答

4

一般來說,我們考慮已安裝的JRE的位置以及運行應用程序所需的命令,這是一個內部細節,可以在沒有兼容性限制的情況下更改。據我所知(運行Java Buildpack團隊近四年),沒有任何合同義務要求在/home/vcap上安裝液滴,這就是爲什麼我們非常小心地在我們的命令中使用$PWD。基於Java的任務的其他早期用戶已允許登臺完全發生(這可以確保諸如內存計算和JAVA_OPTS之類的內容已正確放置在命令中),然後不加修改地使用該命令行。

您在$PWD提前得到解決的問題是最容易逃脫的問題之一。您應該做的第一個更改應該是從雙引號(")切換到單引號('),這將確保$不會立即解決。有可能在管道中的其他地方環境再次得到解決,可能需要逃脫,但是我會堅持下去,直到你確信你已經擁有它。

+0

嗨。我已經在這裏打開了一個有關cf java buildpack的問題:http://stackoverflow.com/questions/43009633你可以好好看看它嗎? – balteo

-1

Java可執行文件可以發現這裏(假設java的buildback使用):

cf run-task bignibou-batch '$PWD/.java-buildpack/open_jdk_jre/bin/java -jar bignibou-batch/build/libs/bignibou-batch.jar' 

不過,我不知道這是要運行一個任務應用程序的Java命令的最佳方式......

P.S.如果您認爲它比這個更好,請隨時添加您自己的答案。

編輯:我已經編輯的路徑和替換爲$PWD變量的硬編碼的應用程序目錄。

+0

像本·黑爾說,目前尚不清楚的是'/ home/vcap'將在未來得到保證。 –

+0

@GlynNormington我已經更新了我的回覆,並考慮到了Ben Hale的 – balteo

+0

就算是'.java-buildpack/open_jdk_jre'也被視爲一個實現細節。正如我們所說的,我們正在討論將該目錄移到更安全的位置。 –

2

要執行一個春天的任務,我發現這個有用:

cf run-task vc-billing-task '$PWD/.java-buildpack/open_jdk_jre/bin/java $JAVA_OPTS -cp $PWD/. org.springframework.boot.loader.JarLauncher' --name "vc-billing-task" 

只要確保你的java /建立包更新到您的具體