2011-09-24 33 views
9

Tôi hiện đang chạy Solr ngoài vùng chứa Jetty mà tàu đó đi cùng. Nó chạy đúng khi chạy từ dòng lệnh qua:Các vấn đề về Đường nối cầu tàu số

java -jar start.jar 

khi tôi ở trong cùng thư mục với start.jar. Rất tiếc, tôi cần có khả năng khởi chạy cầu nối từ bất kỳ thư mục nào, không chỉ thư mục chứa start.jar. Tôi đã thử nhiều lựa chọn, chẳng hạn như:

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 

Mỗi lần tôi nhận được vết lùi này:

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) 

Trả lời

5

Lưu ý rằng khi bạn chạy

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

tùy chọn -cp bị bỏ qua kể từ khi bạn sử dụng tùy chọn -jar.

Từ man java:

-jar

Khi bạn sử dụng tùy chọn này, tập tin JAR là nguồn gốc của tất cả người dùng lớp học, và các thiết lập con đường sử dụng lớp khác được bỏ qua.

Bạn có hai lựa chọn:

  • tiếp tục sử dụng các tùy chọn -jar, nhưng sau đó bạn cần phải cung cấp classpath trong jar file manifest (lưu ý rằng những mục classpath không thể tương đến đường dẫn hiện tại, chỉ liên quan đến tệp jar bạn đang thực hiện)
  • Bỏ qua tùy chọn -jar và cung cấp lớp chính một cách rõ ràng.
0

Bạn đang sử dụng ~ dưới dạng cắt ngắn vào thư mục chính của người dùng hiện tại. Tôi sẽ thay thế tất cả các ký tự dấu ngã bằng một đường dẫn tuyệt đối và xem điều đó có giúp ích gì không.

+1

Điều đó đã được thực hiện bằng cách bash trước khi thực thi. Hãy thử 'echo hello ~' và bạn sẽ thấy. – aioobe

+0

Không phải là giả định anh ta luôn luôn thực hiện từ bash. Ubuntu đôi khi đã làm (không?) Những điều kỳ lạ với sự lựa chọn vỏ mặc định (* dash * vs * bash *, bất cứ ai?), Và tôi đã có vấn đề mở rộng dấu ngã trong quá khứ. – Femi

+0

Tương tự cho tất cả các vỏ tương thích. Đọc phần mở rộng dấu ngã trong hướng dẫn yêu thích của bạn. – aioobe

7

Chỉ cần thay đổi đúng thư mục trước khi gọi java .... đã khắc phục sự cố cho tôi.

+0

Tôi đã gặp vấn đề tương tự, và tôi đã cố gắng chạy nó bằng cách nào đó :). Điều này giải quyết nó! Cảm ơn. – despot

0

Tôi đã gặp phải sự cố này vào tháng 1 năm 2014. Vấn đề của tôi là do tôi đã chạy thiết lập cụm Sở thú từ nơi khác, thư mục $ SOLR_HOME/lib đã được chuyển dưới $ SOLR_HOME/cloud-scripts nơi zkCli.bat tồn tại.Cài đặt thư mục lib trở lại dưới $ SOLR_HOME/và nó hoạt động ngay bây giờ.

Các vấn đề liên quan