我试图让 Maven 自动下载 jetty-start 的所有依赖项,所以我运行这个:
java start.jar etc/jetty.xml
但是当我这样做的时候:
java start.jar --list-options
我得到了几个缺失的模块,我必须将它们作为依赖项手动添加到我的 Maven 文件中。我已经尝试添加它们,但我仍然无法找到合适的 servlet-api
版本,它会提供 javax.servlet.http.HttpServletResponse
,即使下载了 jar因为 jetty-servlet
里面有 javax/servlet/http/HttpServletResponse.class
。这是错误:
java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.eclipse.jetty.start.Main.invokeMain(Main.java:457)
at org.eclipse.jetty.start.Main.start(Main.java:602)
at org.eclipse.jetty.start.Main.main(Main.java:82)
Caused by: java.lang.NoClassDefFoundError: javax/servlet/http/HttpServletResponse
at java.lang.Class.getDeclaredConstructors0(Native Method)
at java.lang.Class.privateGetDeclaredConstructors(Class.java:2389)
at java.lang.Class.getConstructor0(Class.java:2699)
at java.lang.Class.newInstance0(Class.java:326)
at java.lang.Class.newInstance(Class.java:308)
at org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.configure(XmlConfiguration.java:333)
at org.eclipse.jetty.xml.XmlConfiguration.configure(XmlConfiguration.java:291)
at org.eclipse.jetty.xml.XmlConfiguration$1.run(XmlConfiguration.java:1203)
at java.security.AccessController.doPrivileged(Native Method)
at org.eclipse.jetty.xml.XmlConfiguration.main(XmlConfiguration.java:1138)
... 7 more
Caused by: java.lang.ClassNotFoundException: javax.servlet.http.HttpServletResponse
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
... 17 more
我已经尝试将 org.eclipse.jetty.aggregate:jetty-all
包添加到我的依赖列表中,但是其中的包没有被 java start.jar 检测到 - -list-options
,因此不起作用。
有几页文档很有帮助,但不要专门回答这个问题:
最佳答案
你不知道。
jetty-start Artifact 用于 jetty 分发。使用 jetty-start Artifact 时没有自动下载依赖项,因为假设您在本地磁盘上有分布并且只是试图将您的类路径编织在一起以用于服务器启动。
如果您希望在构建期间启动 web 应用程序以进行测试或构建目的,则使用 maven 可以使用 jetty-maven-plugin。通过使用该插件,您将获得所需的大部分依赖项,除非您尝试执行需要额外依赖项的特定操作,在这种情况下,您将它们添加到插件声明的部分。
干杯!
https://stackoverflow.com/questions/10413781/