必须用community server connector插件(red hat发布),旧版tomcat插件已弃用;常见报错因插件装错或jdk<17导致rsp服务无法初始化,需确认项目级settings.json中java.jdt.ls.java.home指向jdk≥17路径,并使用官网下载的标准解压版tomcat。

必须用 Community Server Connector,旧版 Tomcat for Java 插件已彻底弃用,装错就卡死在 “Unable to create the server”。
为什么点“Add Server”直接报错?
最常见原因是插件没装对或 JDK 版本不匹配。Community Server Connector 启动时依赖后台 RSP(Remote Services Platform)服务,而该服务只在 JDK ≥17 时能正常初始化。
- 确认已从 VSCode 扩展市场安装
Community Server Connector(发布者:Red Hat),不是Tomcat Server或Tomcat for Java - 卸载所有其他 Tomcat 相关插件,避免冲突
- 重启 VSCode —— 不重启,
SERVERS面板可能根本不出现 - 检查项目根目录下的
.vscode/settings.json,必须显式写入:"java.jdt.ls.java.home": "/path/to/jdk-17.0.2"
(Windows 路径用正斜杠或双反斜杠,如C:/Program Files/Java/jdk-17.0.2) - 别信全局设置,VSCode 会优先读取项目级
settings.json,这里写错就启动失败
选了 Tomcat 路径却提示 “not a valid Tomcat home”
VSCode 插件校验的是标准解压结构,不是 apt/yum 安装的系统包路径。Ubuntu 上 /usr/share/tomcat9 缺少 bin/catalina.sh 或权限不对,就会被拒绝。
- Linux/macOS:从 Apache 官网下载 tar.gz 包,解压到用户目录(如
$HOME/apache-tomcat-10.1.33) - Windows:下载 zip,解压到不含空格和中文的路径(如
C:\tomcat),确保bin\catalina.bat存在且可执行 - 验证方式:终端进入该目录,运行
bin/catalina.sh version(Linux/macOS)或bin\catalina.bat version(Windows),能输出版本即合法 - 不要设
CATALINA_HOME环境变量 —— 插件会自动识别,设了反而干扰
服务器启动了,但访问 http://localhost:8080/ 显示 404
Community Server Connector 默认只启动空 Tomcat,它不会自动部署你的 Web 项目。你看到的 404 是 Tomcat 自带欢迎页缺失(因为没放 webapps/ROOT),不是插件故障。
- 手动部署最稳:把整个 Web 应用目录(含
WEB-INF/和index.jsp)复制进 Tomcat 的webapps/myapp/,再启动服务器,访问http://localhost:8080/myapp/ - 插件部署要主动触发:在
SERVERS面板右键 Tomcat 实例 →Add Deployment→ 选择含WEB-INF/web.xml的目录或.war文件(如target/my-app.war) - 别指望 Maven
package后自动上线 —— 插件不监听target/变化,必须手动Add Deployment - 路径含空格或中文?Tomcat 会静默跳过,检查日志
logs/catalina.out里有没有Skipped invalid context
调试 JSP 时断点不生效
VSCode 无法直接调试 .jsp 源文件。JSP 在第一次请求时被 Tomcat 编译为 Servlet(work/Catalina/localhost/myapp/org/apache/jsp/index_jsp.java),断点只能打在编译后的 Java 文件上 —— 但这些文件默认不显示在资源管理器中。
- 真要调试 JSP 逻辑,得先访问一次
http://localhost:8080/myapp/index.jsp,让 Tomcat 生成.java和.class - 然后在 VSCode 中打开
work/...下的index_jsp.java(需手动通过File → Open File...导航进去),再设断点 - 更实际的做法是:把业务逻辑抽成普通 Java 类或 Servlet,在那里设断点,JSP 只留展示层
- 别在
index.jsp里写 Java 脚本片段()—— 调试成本高,也违背现代 Web 开发习惯
真正卡住人的地方,从来不是“怎么点按钮”,而是 JDK 版本、路径合法性、部署动作这三处细节 —— 少一个,整个流程就断在看不见的地方。











