You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

NetBeans部署Web应用至Tomcat失败,求原因分析与解决方法

Servlet部署到Tomcat失败问题排查

问题现象

使用NetBeans IDE开发Servlet应用,构建后部署到Tomcat时出现如下错误:

In-place deployment at D:\SpringBootProjects\Servlets\urlrewritingsample\build\web
Deployment is in progress...
deploy?config=file%3A%2FC%3A%2FUsers%2FAyush%2520Singh%2FAppData%2FLocal%2FTemp%2Fcontext1073696000555366189.xml&path=/urlrewritingsample
FAIL - Failed to deploy application at context path [/urlrewritingsample]
D:\SpringBootProjects\Servlets\urlrewritingsample\nbproject\build-impl.xml:1030: The module has not been deployed.
See the server log for details.
BUILD FAILED (total time: 0 seconds)

Tomcat日志信息:

18-Jan-2023 08:19:54.047 SEVERE [http-nio-8080-exec-6] org.apache.catalina.startup.ExpandWar.copy Error copying [C:\Users\Ayush%20Singh\AppData\Local\Temp\context125052041248512568.xml] to [C:\Program Files\Apache Software Foundation\Tomcat 9.0\conf\Catalina\localhost\urlrewritingsample.xml]
    java.io.FileNotFoundException: C:\Users\Ayush%20Singh\AppData\Local\Temp\context125052041248512568.xml (The system cannot find the path specified)
        at java.base/java.io.FileInputStream.open0(Native Method)
        at java.base/java.io.FileInputStream.open(FileInputStream.java:216)
        at java.base/java.io.FileInputStream.<init>(FileInputStream.java:157)
        at org.apache.catalina.startup.ExpandWar.copy(ExpandWar.java:269)
        at org.apache.catalina.manager.ManagerServlet.deploy(ManagerServlet.java:1006)
        at org.apache.catalina.manager.ManagerServlet.doGet(ManagerServlet.java:357)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:670)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:779)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
        at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
        at org.apache.catalina.filters.HttpHeaderSecurityFilter.doFilter(HttpHeaderSecurityFilter.java:126)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:177)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)
        at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:660)
        at org.apache.catalina.valves.RequestFilterValve.process(RequestFilterValve.java:378)
        at org.apache.catalina.valves.RemoteAddrValve.invoke(RemoteAddrValve.java:56)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:135)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
        at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:687)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:360)
        at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399)
        at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
        at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:891)
        at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1784)
        at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
        at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)
        at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
        at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
        at java.base/java.lang.Thread.run(Thread.java:833)

错误原因

  • Tomcat尝试复制临时目录下的context配置文件时找不到目标文件,核心诱因是用户名Ayush Singh包含空格,导致URL编码后的路径解析异常,临时配置文件未正常生成;
  • Tomcat安装在C:\Program Files目录下,普通权限无法向conf/Catalina/localhost目录写入文件;
  • 系统临时文件被自动清理,导致NetBeans生成的临时context文件提前消失。

解决办法

  • 清理临时文件:关闭Tomcat,删除Tomcat安装目录下的work和temp文件夹,同时清空系统临时目录(C:\Users\Ayush Singh\AppData\Local\Temp)中Tomcat相关文件,重启后重新部署;
  • 修改部署方式:在NetBeans中打开项目属性,找到部署设置,取消原地部署(In-place deployment),改为打包WAR文件后部署,绕过临时文件路径问题;
  • 规避路径空格:将Tomcat安装到无空格的路径(如D:\Tomcat9),或修改Windows用户名去掉空格,避免URL编码解析错误;
  • 提升运行权限:以管理员身份运行NetBeans和Tomcat,确保拥有写入Tomcat配置目录和访问临时文件的权限;
  • 手动创建context文件:如果临时文件始终无法生成,可手动在Tomcat的conf/Catalina/localhost目录下创建urlrewritingsample.xml,内容参考项目的context配置,再重新部署。

内容的提问来源于stack exchange,提问作者ayush

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 11:35:31