2011-09-24 12 views
9

Obecnie korzystam z Solr z kontenera Jetty, z którym jest dostarczany. Działa poprawnie po uruchomieniu z wiersza poleceń przez:Problemy z Jetty Classpath

java -jar start.jar 

kiedy jestem w tym samym katalogu co start.jar. Niestety, muszę mieć możliwość uruchomienia mola z dowolnego katalogu, a nie tylko z pliku start.jar. Próbowałem wiele opcji, takich jak:

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 

Za każdym razem otrzymuję ten ślad:

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) 

Odpowiedz

5

Należy pamiętać, że po uruchomieniu

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

opcja -cp jest ignorowany od ciebie użyj opcji -jar.

Od man java:

-jar

Podczas korzystania z tej opcji, plik JAR jest źródłem wszystkich użytkowników klas i inne ustawienia ścieżki klasy użytkownika są ignorowane.

Masz dwie opcje:

  • nadal korzystać z opcji -jar, ale wtedy musisz podać ścieżkę klasy w manifeście pliku jar (zauważ, że te wpisy classpath nie może być względna do bieżącej ścieżki, tylko względem wykonywanego pliku jar)
  • Pomiń opcję -jar i jawnie podaj główną klasę.
0

Używasz ~ jako skrótu do katalogu domowego bieżącego użytkownika. Zamieniłbym wszystkie znaki tyldy na absolutną ścieżkę i zobaczę, czy to pomaga.

+1

To już zrobione przez bash przed wykonaniem. Wypróbuj 'echo hello ~', a zobaczysz. – aioobe

+0

Nie był przy założeniu, że zawsze był wykonywany z basha. Ubuntu czasami robił (robi?) Dziwne rzeczy z domyślnymi wyborami powłoki (* dash * vs * bash *, ktoś?), I miałem problemy z rozszerzeniem tyldy w przeszłości. – Femi

+0

To samo dotyczy wszystkich zgodnych powłok. Przeczytaj o rozszerzeniu tyldy w swojej ulubionej instrukcji. – aioobe

7

Po prostu przejście do właściwego katalogu przed wywołaniem java .... naprawiono problem dla mnie.

+0

Miałem ten sam problem, i próbowałem go uruchomić tak czy inaczej :). To rozwiązało to! Dzięki. – despot

0

Wpadłem na to w styczniu 2014 r. Wydawało mi się, że ponieważ uruchomiłem instalację Cluster Zookeepera z innego miejsca, folder $ SOLR_HOME/lib został przeniesiony pod $ SOLR_HOME/cloud-scripts, gdzie istnieje plik zkCli.bat.Copied the powrót do folderu lib pod $ SOLR_HOME/i działa teraz.