我一直在通过Vert.x开发一个小应用程序,尤其是Vertx-Sync。 Vertx-sync允许您使用异步API,但使用轻量级线程又称Fibers使用直接同步样式。要启动光纤检测,应将javaagent选项作为vm参数传递。作为一个例子,我运行我的应用程序:
java -jar vertxTestCF -javaagent:{path-to-the-jar}/quasar-core-0.7.5-jdk8.jar
。 一切都在本地运行良好,但我无法在云vi cloudfoundry CLI上部署vertxTestCF。我使用以下CLI部署vertxTestCF:
cf push -f manifest.yml vertxTestCF
这是我的manifest.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.
任何提示都会有所帮助。
答案 0 :(得分:0)
您使用JAVA_OPTS
走在正确的轨道上,但您设置的路径是错误的。它是本地计算机上的路径,但是,代码在Cloud Foundry上运行,它将具有不同的路径。
JAVA_OPTS: -javaagent:target/quasar-core-0.7.5-jdk8.jar
根据您的manifest.yml,您正在推送此文件:
- path: ./target/vertxTestCF-1.0-fat.jar
这意味着应用程序的根目录将成为此JAR文件的根目录。这基本上是path
的含义。 CF上应用程序的根目录将以您指定的路径开头。
因此,如果您需要引用quasar-core-0.7.5-jdk8.jar
,则需要将其包含在vertxTestCF-1.0-fat.jar
中,并且quasar-core-0.7.5-jdk8.jar
的相对路径将是您将文件放入{{1}的路径}}
例如:
我有vertxTestCF-1.0-fat.jar
。在其中我有另一个位于test-fat.jar
的JAR。如果我需要引用第二个JAR,它将是lib/my-second.jar
。
希望有所帮助!