如何将独立jar指向javaagent部署到Bluemix CloudFoundry
我一直在通过Vert.x开发一个小应用程序,尤其是Vertx Sync。 Vertx sync允许您使用异步API,但使用轻量级线程的直接同步样式。要启动光纤检测,应将javaagent选项作为vm参数传递。例如,我通过以下方式运行我的应用程序:如何将独立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上部
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,这实际上解决了这个问题。谢谢,你的评论对我帮助很大。