因此,我尝试让 Jetty/Jersey/Gradle 设置提供默认 url 中位于 src/main/webapp/static/
中的 index.html。我的 java 服务器有 /api
,所以我认为显示静态内容会有点容易,但我遇到了问题。这是我的 web.xml
<filter>
<filter-name>Webapp Filter</filter-name>
<filter-class>com.sun.jersey.spi.container.servlet.ServletContainer</filter-class>
<init-param>
<param-name>jersey.config.server.provider.packages</param-name>
<param-value>main/webapp/static</param-value>
</init-param>
<init-param>
<param-name>jersey.config.servlet.filter.staticContentRegex</param-name>
<param-value>/.*html</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>Webapp Filter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
我错过了什么或者做错了什么吗?当我执行 gradle jettyRun 时,我得到了
The ResourceConfig instance does not contain any root resource classes.
failed Webapp Filter: com.sun.jersey.api.container.ContainerException: The ResourceConfig instance does not contain any root resource classes.
Failed startup of context org.gradle.api.plugins.jetty.internal.JettyPluginWebAppContext@48e8a298{/Project,/User/Project/src/main/webapp}
com.sun.jersey.api.container.ContainerException: The ResourceConfig instance does not contain any root resource classes.
所以这让我觉得它正在寻找正确的地方,但也许它只是没有找到正确的东西?感谢您的帮助,我真的很感激
最佳答案
异常意味着:
com.sun.jersey.api.container.ContainerException:ResourceConfig 实例不包含任何根资源类。
注意到您,该 Jersey 找不到服务类。
您的 init-param jersey.config.server.provider.packages
设置不正确,而且位置错误。这就是您想要添加资源类的地方,之后,jersey 想要在那里找到一些 @Path 注释(又名资源类)。
正如我所说,它位于错误的位置 - 它不是过滤器的一部分,它是ServletContainer
servlet 配置的一部分。或者,您可以忽略此内容并在 ResourceConfig
或 Application
实现中声明包。
请阅读:deployment guide
摘要:
<filter>...</filter>
是您可以放置过滤器的地方
<servlet>...</servlet>
(我在 web.xml 中找不到)是您应该插入 ServletContainer
的位置。
因为我已经回答了this question昨天对你来说,我真的建议你阅读手册并尝试一些示例项目,例如:
gradle & tomcat
jersey examples
您还会在那里找到一些 web.xml。
关于java - 提供静态内容 Jetty Jersey Gradle,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25892831/