部署一个嵌入式 Jetty&Jersey war 到 jetty9,只能看到静态文件?

Deploy a embedded Jetty&Jersey war to jetty9,only can see static file?

我用IDEA和Maven创建了一个jetty&jersey嵌入式项目,我把它放在了Githubhttps://github.com/Mengqi777/JettyProject。 运行JettyServerStart.java启动服务器,在浏览器地址栏输入localhost:8080/dynamic,显示OK,输入localhost:8080/static,显示静态资源文件

现在我把它打包成一个war文件,放在jetty webapps目录下。但是在浏览器中输入 localhost:8080/static.404 Not Found Error 在浏览器中输入 localhost:8080/dynamic

时只能看到静态文件

发生了什么事?

如何将这个项目打包成war文件或jar文件,并运行在jetty中成功?

您在 JettyServerStart.java 的嵌入式码头使用中做的事情在您的 webapp 或 war 文件中没有 declare/configure。

这是一个 maven 项目,但没有声明为 webapp 或 war 项目(在 pom.xml 中)

它的 WEB-INF 没有在正确的位置(明智的 maven 目录结构),这意味着您构建的 war 文件无效。

webapp 或 war 项目的依赖项没有正确声明(您不能在 war 文件中包含 jetty-server)

您的位置不佳 WEB-INF/web。xml 没有执行与您的 JettyServerStart.java

相同的配置步骤

您没有指定如何创建 ${jetty.base} 目录来支持此 war 文件?

您没有指定您下载或尝试使用的 jetty-distributionjetty-home 的版本。

说法"and put it in jetty webapps directory"不清楚,请问是哪一个? (使用 jetty-distribution/webapps 是无效的,如果您尝试将它用于您自己的网络应用程序,将导致许多错误和 war 错误,没有 jetty-home/webapps,并且您没有识别您的码头基地配置)

你的项目现在声明的方式,即使是手动组装,完全跳过 maven,你没有 servlet,没有过滤器,没有监听器,没有初始化器,只有一个 servlet 规范在 url- 上强制要求 DefaultServlet pattern / 为您提供静态内容。这就是为什么访问 http://localhost:8080/static/ 有效,但没有别的。