опция vertx run -cp не работает

У меня есть вопрос, когда я использую vertx run.

Моя команда vertx run groovy:myModule -conf conf.json. Но все зависимости находятся в lib. Я нашел документ о добавлении пути к классам в 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 не работает?


person Feng Yu    schedule 18.09.2014    source источник
comment
Имеет ли смысл мой ответ ниже или мне следует уточнить?   -  person Kevin Bayes    schedule 02.10.2014
comment
@Кевин Байес Спасибо. Я не онлайн в эти дни. Поэтому я отвечаю немного поздно.   -  person Feng Yu    schedule 03.10.2014


Ответы (1)


Если вы посмотрите на скрипт vertx для добавления к пути к классам, вы установите свойство пути к классам, как описано выше, «CLASSPATH="lib/*".

Затем это используется в следующей строке скрипта:

CLASSPATH=${CLASSPATH}:${VERTX_HOME}/conf:${VERTX_HOME}/lib/*

Затем последняя строка скрипта использует эту переменную для установки свойства java -classpath при запуске vertx:

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, но для этого потребуется настроить сценарий.

person Kevin Bayes    schedule 28.09.2014