用Jetty运行Solr

时间:2013-03-05 20:13:58

标签: solr jetty

我在理解Solr如何适应Jetty方面遇到了一些麻烦,以及为什么我似乎无法让分发包中的start.jar工作。

我可以通过java -jar start.jar运行所有示例配置。但是,当我尝试运行类似下面的内容时 -

java -Dsolr.solr.home=/Users/jwwest/solr -jar $(brew --prefix solr)/libexec/example/start.jar

- 发生以下错误:

java.io.FileNotFoundException: No XML configuration files specified in start.config or command line.
    at org.eclipse.jetty.start.Main.start(Main.java:506)
    at org.eclipse.jetty.start.Main.main(Main.java:95)

我打开了start.jar文件,并且在jar内部有一个start.config文件,我假设应该为我处理这个配置。我不明白为什么它从分发示例目录中运行时会起作用,但不能在它之外运行。

5 个答案:

答案 0 :(得分:4)

您还需要定义jetty.home属性。尝试:

java -Dsolr.solr.home=/Users/jwwest/solr -jar $(brew --prefix solr)/libexec/example/start.jar -Djetty.home=$(brew --prefix solr)/libexec/example

答案 1 :(得分:3)

您可以使用--dry-run命令行标志看到生效的命令行start.jar。

  

java -jar start.jar --dry-run

这将输出具有完整路径名的所有内容,以便您可以从目录外部运行它。

来源:http://www.eclipse.org/jetty/documentation/9.0.0.M3/advanced-jetty-start.html

答案 2 :(得分:2)

start.jar是一种特定于jetty的机制,用于构建启动Jetty的所有类路径要求。它通常仅用于码头分布范围。将start.jar拉出配置并将其放在其他位置会使start.config的默认配置变得没有用。

我对Solr的理解是它将自己与一个码头分布捆绑在一起,将它需要的东西放入分配中并将其重新打包为它自己。它们可能有一个自定义的start.config文件,它进一步为类路径资源等添加自己的位置。

您看到的异常源于start.config文件,该文件需要包含jetty.xml格式的xml文件的etc /目录,这些文件用于配置jetty进程。

经常以嵌入格式使用的Jetty与此问题几乎没有关系,它只是一个常见的用例,因为jetty非常容易嵌入到应用程序中。嵌入式jetty实例很少(如果有的话)利用start.jar ...而是由嵌入应用程序来管理它自己的类路径。

答案 3 :(得分:1)

首先,您需要更改start.jar所在的文件夹,然后执行相同的命令。

答案 4 :(得分:0)

Jetty通常用作嵌入式容器。如果你想使用jetty,那么一个好的开始就是复制示例目录并将其重命名为你想要的目录。 solr目录是基本配置的目录。

否则建议使用tomcat和solr.war文件。