Jetty Classpath问题

时间:2011-09-24 06:14:28

标签: java solr jetty

我目前正在使用它附带的Jetty容器运行Solr。通过以下命令从命令行运行时,它可以正确运行:

java -jar start.jar

当我和start.jar在同一目录中时。不幸的是,我需要能够从任何目录启动jetty,而不仅仅是包含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 个答案:

答案 0 :(得分:7)

在调用java之前,只需更改到正确的目录....为我修复了问题。

答案 1 :(得分:5)

请注意,当您运行

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

由于您使用-cp选项,因此会忽略-jar选项。

来自man java

  

-jar

     

使用此选项时,JAR文件是所有用户的来源   类和其他用户类路径设置将被忽略。

您有两种选择:

  • 继续使用-jar选项,但是您需要在jar清单文件中提供类路径(请注意,这些类路径条目不能相对到当前路径,仅相对于你正在执行的jar文件)
  • 跳过-jar选项并明确提供主类。

答案 2 :(得分:0)

您使用~作为当前用户主目录的捷径。我将用绝对路径替换所有波形符,并查看是否有帮助。

答案 3 :(得分:0)

我在2014年1月碰到了这个问题。我的问题是,因为我从其他地方运行了Cluster Zookeeper安装程序,所以$ SOLR_HOME / lib文件夹被移动到zkCli.bat存在的$ SOLR_HOME / cloud-scripts下。复制了lib文件夹回到$ SOLR_HOME /下,现在可以正常工作。