Jetty Classpath问题

Ash*_*n K 9 java solr jetty

我目前正在运行Solr,它是随附的Jetty容器.从命令行运行时,它可以正常运行:

java -jar start.jar
Run Code Online (Sandbox Code Playgroud)

当我和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 
Run Code Online (Sandbox Code Playgroud)

每次我得到这个回溯:

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)
Run Code Online (Sandbox Code Playgroud)

Jus*_*iak 7

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


aio*_*obe 5

请注意,当你运行

java  ... -cp ~/solr/start.jar:... -jar ~/solr/start.jar ~/solr/etc/jetty.xml 
Run Code Online (Sandbox Code Playgroud)

-cp,因为你使用的选项将被忽略-jar选项.

来自man java:

-jar

使用此选项时,JAR文件是所有用户类的源,并忽略其他用户类路径设置.

您有两种选择:

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