Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Jetty类路径问题_Java_Solr_Jetty - Fatal编程技术网

Java Jetty类路径问题

Java Jetty类路径问题,java,solr,jetty,Java,Solr,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/je

我目前正在用码头集装箱运送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)
请注意,当您运行

java  ... -cp ~/solr/start.jar:... -jar ~/solr/start.jar ~/solr/etc/jetty.xml 
由于使用了
-jar
选项,因此将忽略
-cp
选项

manjava

-jar

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

您有两个选择:

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

您正在使用
~
作为通往当前用户主目录的捷径。我会用一个绝对路径替换所有的平铺字符,看看这是否有帮助。

在调用java之前,只需切换到正确的目录。。。。为我修复了这个问题。

我在2014年1月遇到了这个问题。我的问题是,因为我从其他地方运行了群集Zookeeper安装程序,$SOLR_HOME/lib文件夹被移动到了zkCli.bat所在的$SOLR_HOME/cloud脚本下。将lib文件夹复制回$SOLR_HOME/下,现在就可以工作了。

在执行之前,bash已经完成了这项工作。试试echo hello ~,你就会看到。我并没有假设他总是从bash执行。Ubuntu偶尔会在默认的shell选项中做一些奇怪的事情(dash vs bash,有人吗?),我过去也遇到过tilde扩展问题。所有兼容的shell都是如此。请阅读您最喜欢的手册中关于tilde扩展的内容。我也遇到了同样的问题,我正试图运行它:)。这就解决了!谢谢