当我使用vertx run
时,我有一个问题。
我的命令是vertx run groovy:myModule -conf conf.json
。但依赖关系都在lib
。我发现doc有关将类路径添加到vertx,只需将-cp
传递给vertx run
。
所以我使用vertx run groovy:myModule -conf conf.json -cp "lib/*"
,但它不起作用,也会抛出unable to resolve class
例外。
然后我读了vertx脚本,我发现vertx会传递CLASSPATH
环境变量。所以我试试这个:
CLASSPATH="lib/*" vertx run groovy:myModule -conf conf.json
有效!
为什么-cp
不起作用?
答案 0 :(得分:1)
如果您查看要添加到类路径的vertx脚本,请按照上面的描述设置classpath属性" CLASSPATH =" lib / *"。
然后在脚本的以下行中使用它:
CLASSPATH=${CLASSPATH}:${VERTX_HOME}/conf:${VERTX_HOME}/lib/*
然后脚本的最后一行使用此变量在启动vertx时设置java -classpath属性:
exec "$JAVACMD" \
"${JVM_OPTS[@]}" \
-Djava.util.logging.config.file=${VERTX_JUL_CONFIG:-${VERTX_HOME}/conf/logging.properties} \
-Dvertx.home=$VERTX_HOME\
-Dvertx.clusterManagerFactory=org.vertx.java.spi.cluster.impl.hazelcast.HazelcastClusterManagerFactory\
-classpath "$CLASSPATH" \
org.vertx.java.platform.impl.cli.Starter "$@"
这是设置变量工作的原因,并且使用-cp不起作用。您可以更改脚本以接受-cp输入,但这需要您自定义脚本。