如何将独立jar指向javaagent部署到Bluemix CloudFoundry

如何将独立jar指向javaagent部署到Bluemix CloudFoundry,java,cloud-foundry,vert.x,Java,Cloud Foundry,Vert.x,我一直在通过Vert.x开发一个小应用程序,尤其是Vertx Sync。 Vertx sync允许您使用异步API,但使用轻量级线程的直接同步样式。要启动光纤检测,应将javaagent选项作为vm参数传递。例如,我通过以下方式运行我的应用程序: java -jar vertxTestCF -javaagent:{path-to-the-jar}/quasar-core-0.7.5-jdk8.jar 。 一切都在本地运行良好,但我无法在cloud vi cloudfoundry CLI上部

我一直在通过Vert.x开发一个小应用程序,尤其是Vertx Sync。 Vertx sync允许您使用异步API,但使用轻量级线程的直接同步样式。要启动光纤检测,应将javaagent选项作为vm参数传递。例如,我通过以下方式运行我的应用程序:

 java -jar vertxTestCF -javaagent:{path-to-the-jar}/quasar-core-0.7.5-jdk8.jar 
。 一切都在本地运行良好,但我无法在cloud vi cloudfoundry CLI上部署vertxTestCF。我使用以下CLI部署vertxTestCF:

cf push -f manifest.yml vertxTestCF
这是我的清单。yml:

    applications:
    - path: ./target/vertxTestCF-1.0-fat.jar
      memory: 256M
      instances: 1
      name: vertxTestCf
      buildpack: https://github.com/cloudfoundry/java-buildpack.git#3.x
      env:
          JAVA_OPTS: -javaagent:target/quasar-core-0.7.5-jdk8.jar
部署期间的错误消息为:

[APP/PROC/WEB/0] ERR Error opening zip file or JAR manifest missing : target/quasar-core-0.7.5-jdk8.

任何提示都会很有帮助。

您使用
JAVA\u OPTS
的方法是正确的,但是您设置的路径是错误的。这是本地机器上的路径,但是,代码正在CloudFoundry上运行,这将有一个不同的路径

JAVA_OPTS: -javaagent:target/quasar-core-0.7.5-jdk8.jar
根据manifest.yml,您正在推送此文件:

 - path: ./target/vertxTestCF-1.0-fat.jar
这意味着应用程序的根将成为这个JAR文件的根。这就是路径的本质含义。CF上应用程序的根目录将以您指定的路径开始

因此,如果您需要引用
quasar-core-0.7.5-jdk8.jar
它需要包含在
vertxTestCF-1.0-fat.jar
中,而
quasar-core-0.7.5-jdk8.jar
的相对路径将是您将文件放入
vertxTestCF-1.0-fat.jar
中的路径

例:

我有
测试fat.jar
。在它里面,我有另一个JAR,位于
lib/my second.JAR
。如果我需要引用第二个JAR,它应该是
-javaagent:lib/my second.JAR


希望有帮助

我在要部署的jar中添加了quasar-core-0.7.5-jdk8.jar,这实际上解决了这个问题。谢谢,你的评论对我帮助很大。