无法在CentOS上启动Jetty作为服务

时间:2013-06-24 00:21:22

标签: jetty

当我尝试将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

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

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

任何人都可以清楚地解释如何使用lib文件夹中的jar来使用jetty加载CrossOriginFilter。

1 个答案:

答案 0 :(得分:1)

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

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

lib=lib

你应该添加这个

lib=/<full path to jetty>/lib

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

我唯一讨厌SO的是我通常在发布后立即解决问题。

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