我用IDEA和Maven创建了一个码头和球衣嵌入式项目,我把它放在Github https://github.com/Mengqi777/JettyProject中。运行JettyServerStart.java启动服务器,在浏览器地址栏中输入localhost:8080/dynamic
,显示OK,输入localhost:8080/static
,显示静态资源文件
现在我将它打包到war文件中,并将其放在jetty webapps目录中。但只有在输入localhost:8080/static
时才能看到浏览器中的静态文件。在浏览器中使用输入localhost:8080/dynamic
时找不到404错误
发生了什么?
如何将此项目打包成war文件或jar文件并成功在jetty中运行该怎么办?
答案 0 :(得分:0)
您正在使用JettyServerStart.java中的嵌入式Jetty用法,而不是在webapp或war文件中声明/配置。
这是一个maven项目,但未声明为webapp或war项目(在pom.xml中)
它的WEB-INF没有在正确的位置(明智的maven目录结构),这意味着你的内置war文件是无效的。
对于webapp或war项目,没有正确声明依赖项(您不能在war文件中包含jetty-server)
位置不佳的WEB-INF / web.xml不会执行与JettyServerStart.java相同的配置步骤
您没有指定如何创建${jetty.base}
目录以支持此war文件?
您没有指定您下载或尝试使用的jetty-distribution
或jetty-home
版本。
声明“并将其放入jetty webapps目录”尚不清楚,哪一个? (使用jetty-distribution / webapps无效,如果您尝试将其用于自己的Web应用程序,将导致许多错误和警告,没有jetty-home / webapps,并且您没有识别您的基于jetty的配置)
现在声明项目的方式,即使手动组装,完全跳过maven,也没有servlet,没有过滤器,没有监听器,没有初始化器,只有url-pattern /
上的servlet规范DefaultServlet给你静态内容。这就是为什么访问http://localhost:8080/static/
有效,但没有别的。