11

我在理解 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 文件,我假设它应该为我处理这个配置。我不明白为什么从分发示例目录内部运行它会起作用,而不是在它外部运行。

4

5 回答 5

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
于 2013-08-22T04:36:45.067 回答
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

于 2013-08-26T11:48:42.363 回答
2

start.jar 是一个特定于 Jetty 的机制,用于构建启动 Jetty 的所有类路径要求。一般只在码头分布范围内使用。将 start.jar 从配置中拉出并将其放置在其他位置会使 start.config 的默认配置变得毫无意义。

我对 Solr 的理解是,它将自己与 jetty 的分发捆绑在一起,将运行所需的内容放入分发中并将其重新打包为自己的。他们可能有一个自定义的 start.config 文件,该文件进一步添加了自己的类路径资源等位置,或者没有。

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

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

于 2013-03-05T22:47:41.290 回答
1

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

于 2013-09-13T01:34:29.537 回答
0

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

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

于 2013-03-05T20:31:41.260 回答