2

当我尝试以用户或服务的身份启动 jetty-9.0.3.v20130506 时,我收到如下错误:

2013-06-24 00:00:36.927:WARN:oejs.Holder:main: 
java.lang.ClassNotFoundException: org.eclipse.jetty.servlets.CrossOriginFilter
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)

当我将 lib=lib 添加到 start.ini 时,我可以通过启动脚本以用户身份运行 jetty。我不明白添加这个标准位置是如何修复它的,但它确实如此。

bin/jetty.sh start

当我尝试将使用相同脚本的码头作为服务启动时,它会因上面给出的错误而失败。

看起来启动脚本在作为服务启动时不使用 start.ini,因为它不处理解决问题的 lib=lib 语句。

谁能提供一个清晰的解释,说明我如何让码头使用 lib 文件夹中的 jar 加载 CrossOriginFilter。

4

1 回答 1

1

好吧,这会引起很多痛苦。

你不应该把它添加到 start.ini

lib=lib

你应该添加这个

lib=/<full path to jetty>/lib

当作为服务运行时,脚本由于某种原因不会应用相对路径,就像它对 start.ini 中的其他参数所做的那样。只需使用完整路径。

我唯一讨厌 SO 是我通常在发布后立即找出问题。

更新:下面的解决方案,将 servlet 添加到选项中,是要走的路。这很容易,但由于某种原因,我在任何其他有关 CrossOriginFilter 的帖子中都没有看到这一点。

于 2013-06-24T00:32:09.997 回答