The ResourceConfig instance does not contain any root resource classes

在myEclipse2017部署web项目时,遇到StandardWrapper.Throwable错误,提示ResourceConfig实例中未包含任何root资源类。解决办法是在web.xml中注释或删除与JAX-RS相关的servlet配置。

当在 myEclipse2017 下部署 web 项目的时候,会报如下错误:

严重: StandardWrapper.Throwable
com.sun.jersey.api.container.ContainerException: The ResourceConfig instance does not contain any root resource classes.
	at com.sun.jersey.server.impl.application.RootResourceUriRules.<init>(RootResourceUriRules.java:103)
	at com.sun.jersey.server.impl.application.WebApplicationImpl._initiate(WebApplicationImpl.java:1182)
	at com.sun.jersey.server.impl.application.WebApplicationImpl.access$600(WebApplicationImpl.java:161)
	at com.sun.jersey.server.impl.application.WebApplicationImpl$12.f(WebApplicationImpl.java:698)
	at com.sun.jersey.server.impl.application.WebApplicationImpl$12.f(WebApplicationImpl.java:695)
	at com.sun.jersey.spi.inject.Errors.processWithErrors(Errors.java:197)
	at com.sun.jersey.server.impl.application.WebApplicationImpl.initiate(WebApplicationImpl.java:695)
	at com.sun.jersey.server.impl.application.WebApplicationImpl.initiate(WebApplicationImpl.java:690)
	at com.sun.jersey.spi.container.servlet.ServletContainer.initiate(ServletContainer.java:438)
	at com.sun.jersey.spi.container.servlet.ServletContainer$InternalWebComponent.initiate(ServletContainer.java:287)
	at com.sun.jersey.spi.container.servlet.WebComponent.load(WebComponent.java:587)

 

解决方式

因为我们在新建 web项目的时候,在 web.xml 文件里面会默认生成

  <servlet>
    <description>JAX-RS Tools Generated - Do not modify</description>
    <servlet-name>JAX-RS Servlet</servlet-name>
    <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>JAX-RS Servlet</servlet-name>
    <url-pattern>/jaxrs/*</url-pattern>
  </servlet-mapping>

把它注释掉或删除掉,重新部署即可

 

 

 

在使用 `FFmpeg` 处理视频时,如果遇到错误提示 `Output file #0 does not contain any stream`,这通常意味着输出文件中没有可用的音视频流。导致这一问题的原因可能包括编码器未正确配置、输入文件格式不支持、或资源使用过多(如内存或 CPU 过载)[^1]。 ### 常见原因与解决方案 #### 1. **编码器缺失或配置错误** 当 `FFmpeg` 无法识别或未指定合适的编码器时,会导致输出文件中没有流。例如,在对 `H.264` 文件进行 RTP 打包时,如果没有指定 `libx264` 编码器,就会出现此错误。解决方法是明确指定编码器: ```bash ffmpeg -i test22.264 -f rtp -vcodec libx264 rtp://10.102.5.226:15000 ``` 这样可以确保 `FFmpeg` 使用正确的编码器进行处理[^2]。 #### 2. **输入文件格式问题** 确保输入文件包含有效的音视频流。可以使用以下命令检查输入文件的流信息: ```bash ffmpeg -i input.mp4 ``` 如果输出中没有 `Stream` 信息,说明输入文件可能损坏或格式不支持。尝试使用其他工具(如 `VLC` 或 `MediaInfo`)验证文件完整性。 #### 3. **资源使用过高** 如果系统资源(如内存或 CPU)使用率过高,也可能导致 `FFmpeg` 无法正常处理流。可以通过以下命令监控系统资源: ```bash top ``` 或 ```bash htop ``` 如果发现资源占用过高,可以尝试关闭不必要的程序,或调整 `FFmpeg` 的参数以降低资源消耗,例如使用 `-threads` 参数限制线程数: ```bash ffmpeg -i input.mp4 -threads 2 output.mp4 ``` #### 4. **FFmpeg 版本问题** 某些旧版本的 `FFmpeg` 可能对某些格式或编码器的支持不够完善。建议使用最新版本的 `FFmpeg`,可以通过以下命令更新: ```bash sudo apt update && sudo apt upgrade ffmpeg ``` #### 5. **使用正确的封装格式** 在某些情况下,输出格式可能不支持指定的流类型。例如,尝试将 `H.264` 流封装为 `RTP` 格式时,必须确保输出格式和编码器匹配。可以使用 `-f` 参数指定输出格式,并确保编码器与之兼容: ```bash ffmpeg -i test22.264 -f rtp -vcodec libx264 rtp://10.102.5.226:15000 ``` ### 调试与验证 可以使用 `FFmpeg` 的 `-report` 参数生成详细的日志文件,帮助排查问题: ```bash ffmpeg -i input.mp4 -report output.mp4 ``` 日志文件通常保存在当前目录下,文件名为 `ffmpeg-YYYYMMDD-HHMMSS.log`,通过查看日志可以更深入地了解错误原因。 ### 总结 解决 `Output file #0 does not contain any stream` 错误的关键在于确保输入文件包含有效流、正确配置编码器、合理使用系统资源,并使用最新版本的 `FFmpeg` 工具链。通过逐步排查这些方面,通常可以找到并解决根本问题。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

被开发耽误的大厨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值