1

org.springframework.web.util.NestedServletException: Handler processing failed; nested exception is java.io.IOError: java.io.FileNotFoundException: NUL: (系统找不到指定的文件。)

at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1062)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:942)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1005)
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:897)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:634)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:882)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
at io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:74)
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:129)
at org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:61)
at org.apache.shiro.web.servlet.AdviceFilter.executeChain(AdviceFilter.java:108)
at org.apache.shiro.web.servlet.AdviceFilter.doFilterInternal(AdviceFilter.java:137)
at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125)
at org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:66)
at org.apache.shiro.web.servlet.AbstractShiroFilter.executeChain(AbstractShiroFilter.java:449)
at org.apache.shiro.web.servlet.AbstractShiroFilter$1.call(AbstractShiroFilter.java:365)
at org.apache.shiro.subject.support.SubjectCallable.doCall(SubjectCallable.java:90)
at org.apache.shiro.subject.support.SubjectCallable.call(SubjectCallable.java:83)
at org.apache.shiro.subject.support.DelegatingSubject.execute(DelegatingSubject.java:387)
at org.apache.shiro.web.servlet.AbstractShiroFilter.doFilterInternal(AbstractShiroFilter.java:362)
at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125)
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:109)
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:92)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:109)
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:93)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:109)
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:200)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:109)
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
at io.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.java:84)
at io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62)
at io.undertow.servlet.handlers.ServletChain$1.handleRequest(ServletChain.java:68)
at io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36)
at io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:132)
at io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57)
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
at io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46)
at io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64)
at io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:60)
at io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:77)
at io.undertow.security.handlers.AbstractSecurityContextAssociationHandler.handleRequest(AbstractSecurityContextAssociationHandler.java:43)
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
at io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:292)
at io.undertow.servlet.handlers.ServletInitialHandler.access$100(ServletInitialHandler.java:81)
at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:138)
at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:135)
at io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:48)
at io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43)
at io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:272)
at io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:81)
at io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:104)
at io.undertow.server.Connectors.executeRootHandler(Connectors.java:364)
at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:830)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.base/java.lang.Thread.run(Thread.java:835)

Caused by: java.io.IOError: java.io.FileNotFoundException: NUL: (系统找不到指定的文件。)

at org.xnio.channels.Channels$4.run(Channels.java:998)
at org.xnio.channels.Channels$4.run(Channels.java:988)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:310)
at org.xnio.channels.Channels.<clinit>(Channels.java:988)
at io.undertow.servlet.spec.ServletOutputStreamImpl.flushInternal(ServletOutputStreamImpl.java:494)
at io.undertow.servlet.spec.ServletOutputStreamImpl.flush(ServletOutputStreamImpl.java:476)
at io.undertow.servlet.spec.ServletPrintWriter.flush(ServletPrintWriter.java:72)
at io.undertow.servlet.spec.ServletPrintWriterDelegate.flush(ServletPrintWriterDelegate.java:76)
at io.undertow.servlet.spec.RequestDispatcherImpl.forwardImpl(RequestDispatcherImpl.java:237)
at io.undertow.servlet.spec.RequestDispatcherImpl.forwardImplSetup(RequestDispatcherImpl.java:149)
at io.undertow.servlet.spec.RequestDispatcherImpl.forward(RequestDispatcherImpl.java:111)
at org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:170)
at org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:316)
at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1371)
at org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1117)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1056)
... 66 common frames omitted

Caused by: java.io.FileNotFoundException: NUL: (系统找不到指定的文件。)

at java.base/java.io.FileOutputStream.open0(Native Method)
at java.base/java.io.FileOutputStream.open(FileOutputStream.java:292)
at java.base/java.io.FileOutputStream.<init>(FileOutputStream.java:235)
at java.base/java.io.FileOutputStream.<init>(FileOutputStream.java:124)
at org.xnio.channels.Channels$4.run(Channels.java:993)
... 81 common frames omitted

2020-07-22 21:33:01.410 [XNIO-2 task-1] ERROR io.undertow.request - UT005071: Undertow request failed HttpServerExchange{ GET /}
java.lang.NoClassDefFoundError: Could not initialize class org.xnio.channels.Channels

at io.undertow.servlet.spec.ServletOutputStreamImpl.close(ServletOutputStreamImpl.java:618)
at io.undertow.servlet.spec.ServletPrintWriter.close(ServletPrintWriter.java:117)
at io.undertow.servlet.spec.ServletPrintWriterDelegate.close(ServletPrintWriterDelegate.java:81)
at io.undertow.servlet.spec.HttpServletResponseImpl.closeStreamAndWriter(HttpServletResponseImpl.java:480)
at io.undertow.servlet.spec.HttpServletResponseImpl.responseDone(HttpServletResponseImpl.java:575)
at io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:351)
at io.undertow.servlet.handlers.ServletInitialHandler.access$100(ServletInitialHandler.java:81)
at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:138)
at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:135)
at io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:48)
at io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43)
at io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:272)
at io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:81)
at io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:104)
at io.undertow.server.Connectors.executeRootHandler(Connectors.java:364)
at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:830)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.base/java.lang.Thread.run(Thread.java:835)

2020-07-22 21:33:01.419 [XNIO-2 task-1] ERROR io.undertow.request.io - UT005090: Unexpected failure
java.lang.NoClassDefFoundError: Could not initialize class org.xnio.channels.Channels

at io.undertow.servlet.spec.ServletInputStreamImpl.readIntoBuffer(ServletInputStreamImpl.java:192)
at io.undertow.servlet.spec.ServletInputStreamImpl.close(ServletInputStreamImpl.java:257)
at io.undertow.servlet.spec.HttpServletRequestImpl.closeAndDrainRequest(HttpServletRequestImpl.java:681)
at io.undertow.servlet.core.ServletBlockingHttpExchange.close(ServletBlockingHttpExchange.java:89)
at io.undertow.server.HttpServerExchange.endExchange(HttpServerExchange.java:1626)
at io.undertow.server.Connectors.executeRootHandler(Connectors.java:404)
at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:830)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.base/java.lang.Thread.run(Thread.java:835)

使用springboot集成undertow时,启动不报错,在访问首页的时候,报如上的错误。
现象:

而且同样的代码在公司电脑上不报错,却在自己电脑上报错,在自己电脑上把所有IDEA的配置、代码存放路径、maven配置、Maven仓储路径全部设置成公司电脑上的一样,还是有问题。

解决思路

从错误信息看是找不到文件,但错误提示信息没给出具体的文件路径和文件名称,从上面的异常信息“Caused by: java.io.IOError: java.io.FileNotFoundException: NUL: (系统找不到指定的文件。)”下面的“at org.xnio.channels.Channels$4.run(Channels.java:998)”这一行,可以看出错误是从这个方法里报出来的,Channels类在xnio-api-3.3.8.Final.jar中,如下图所示红框位置:

image.png
通过debug,最后发现是走到了下图(在java.io.FileOutputStream类里)中的下面红框这里抛出了异常:
image.png
下面红框对应的方法在上面那个红框,而这个方法调用的是JVM底层的东西,怎么查看底层的对应的代码呢?这个需要你自己去百度,到了这里,应该就能明白,报错应该跟系统某些环境有关系,最后经过一番百度,发现跟系统里的C:WindowsSystem32driversnull.sys文件有关系,可能是此文件丢失、或被破坏,因为是盗版系统,被破坏的可能是极大。
解决步骤

  1. 在cmd命令窗口(Ctrl + R,输入cmd,回车)中输入如下命令:sc query null,查看null是否运行正常,如下图所示,STATE为RUNNING(正在运行),则表示正常,如果此时还报错,则本博客不适用你;

image.png
如果STATE为STOPPED(已停止),则表示不正常,重新下载null.sys文件(下载地址:https://pan.baidu.com/s/1-Pmr...,密码:clnl)并替换掉(替换之前先将本地的null.sys备份到其它目录)本地的C:WindowsSystem32driversnull.sys文件,null.sys为7kb的小文件,注意:需要下载对应的32位或64位系统的null.sys文件。
替换完后,重启电脑。在cmd中再次输入sc query null查看是否正常,如果还是停止状态,则继续输入:sc start null 命令,启动null程序,启动完成后,再次查看是否正常。
如果启动报错,再重复上面的步骤1(需要自行百度下载null.sys文件),若还是启动报错,则在C:WindowsSystem32位置,找到cmd.exe,以管理员运行cmd,粘贴输入sfc /scannow 命令进行修复,如果不报错,则重启电脑,再执行:sc query null 命令查看是否正常。若执行sfc /scannow 命令报错,则执行如下步骤:
(1)在联网情况下,在命令提示符中输入:
DISM.exe /Online /Cleanup-image /Scanhealth,按回车键,
DISM.exe /Online /Cleanup-image /Restorehealth,按回车键。
完成后请重启电脑。
(2)在C:\Windows\System32位置,找到cmd,以管理员运行cmd,粘贴输入sfc /scannow 命令进行修复,重启电脑,再执行:sc query null 命令查看是否正常。
如果在上面步骤(1)、(2)中报错,则需要根据cmd上的日志(日志目录为:C:WindowsLogsCBSCBS.log,C:WindowsLogsDISMdism.log)补充缺失的系统文件,再修复。
经过以上步骤,即可解决“Caused by: java.io.FileNotFoundException: NUL: (系统找不到指定的文件。)”BUG。但是目前还不知道这个错跟null.sys文件之间存在什么关联关系,望知道的朋友指点一二,如有写的不对的地方,请指出并提出修改意见,谢谢。希望这篇博客能帮助网友们。
参考网站:
https://www.jfinal.com/feedba...
https://www.zhihu.com/questio...


罗Loe
1 声望0 粉丝