Проблемы с Jetty Classpath - PullRequest
       16

Проблемы с Jetty Classpath

9 голосов
/ 24 сентября 2011

В настоящее время я запускаю Solr из контейнера Jetty, с которым он поставляется. Он работает правильно при запуске из командной строки через:

java -jar start.jar

когда я нахожусь в том же каталоге, что и start.jar. К сожалению, мне нужно иметь возможность запускать джетти из любого каталога, а не только из того, который содержит start.jar. Я пробовал много вариантов, таких как:

java  -Dsolr.solr.home=~/solr/ -Djetty.home=~/solr/ -Djetty.logs=~/solr/logs/ -cp ~/solr/start.jar:~/solr/lib/jetty-util-6.1.26-patched-JETTY-1340.jar:~/solr/lib/jetty-6.1.26-patched-JETTY-1340.jar:~/solr/lib/servlet-api-2.5-20081211.jar -jar ~/solr/start.jar ~/solr/etc/jetty.xml 

Каждый раз, когда я получаю этот след:

java.lang.ClassNotFoundException: org.mortbay.xml.XmlConfiguration
at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
at org.mortbay.start.Main.invokeMain(Main.java:179)
at org.mortbay.start.Main.start(Main.java:534)
at org.mortbay.start.Main.start(Main.java:441)
at org.mortbay.start.Main.main(Main.java:119)

Ответы [ 4 ]

7 голосов
/ 01 марта 2012

Простое переключение на правильный каталог перед вызовом Java .... исправило проблему для меня.

5 голосов
/ 24 сентября 2011

Обратите внимание, что при запуске

java  ... -cp ~/solr/start.jar:... -jar ~/solr/start.jar ~/solr/etc/jetty.xml 

опция -cp игнорируется, поскольку вы используете опцию -jar.

С man java:

-jar

Когда вы используете эту опцию, файл JAR является источником всех пользовательских классов, а другие параметры пути к классам пользователей игнорируются.

У вас есть две опции:

  • Продолжайте использовать опцию -jar, но затем вам нужно будет указать classpath в файле манифеста jar (обратите внимание, что эти записи classpath не могут быть относительно текущего пути, только относительно исполняемого вами jar-файла)
  • Пропустите параметр -jar и предоставьте основной класс явно.
0 голосов
/ 25 января 2014

Я столкнулся с этим в январе 2014 года. Моя проблема заключалась в том, что, поскольку я запустил установку Cluster Zookeeper из другого места, папка $ SOLR_HOME / lib была перемещена в папку $ SOLR_HOME / cloud-scripts, где существует zkCli.bat. Скопировал libназад в папку $ SOLR_HOME /, и теперь она работает.

0 голосов
/ 24 сентября 2011

Вы используете ~ в качестве ярлыка для домашнего каталога текущего пользователя. Я бы заменил все символы тильды на абсолютный путь и посмотрел, поможет ли это.

...