当我尝试将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。
答案 0 :(得分:1)
好吧,这个引起很多痛苦。
你不应该把它添加到start.ini
lib=lib
你应该添加这个
lib=/<full path to jetty>/lib
作为服务运行时,脚本由于某种原因不会应用相对路径,就像start.ini中的其他参数一样。只需使用完整路径。
我唯一讨厌SO的是我通常在发布后立即解决问题。
更新:下面的解决方案,将servlet添加到选项中,是可行的方法。这很容易,但由于某种原因,我没有在关于CrossOriginFilter的任何其他帖子中看到这一点。