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

Apache Tomcat无响应:Unsupported target VM问题求助

解决建议

问题根源

Tomcat的Jasper编译器(基于JDT实现)无法识别Java 11作为源码/目标版本,自动降级到了1.3/1.2版本,这会导致JSP编译出的字节码与Java 11环境不兼容,进而引发GUI无响应这类运行时异常。

修复步骤

1. 配置项目级JSP编译参数

在项目的WEB-INF/web.xml中添加或更新JSP编译配置,指定Java 11作为源码和目标版本:

<web-app xmlns="https://jakarta.ee/xml/ns/jakartaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/web-app_5_0.xsd"
         version="5.0">
  <jsp-config>
    <jsp-property-group>
      <url-pattern>*.jsp</url-pattern>
      <compiler-source>11</compiler-source>
      <compiler-target>11</compiler-target>
    </jsp-property-group>
  </jsp-config>
</web-app>

配置完成后重新部署项目。

2. 调整Tomcat全局JSP编译配置

修改Tomcat安装目录下的conf/web.xml,找到名为jsp的Servlet配置,添加初始化参数指定Java版本:

<servlet>
  <servlet-name>jsp</servlet-name>
  <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
  <init-param>
    <param-name>compilerSourceVM</param-name>
    <param-value>11</param-value>
  </init-param>
  <init-param>
    <param-name>compilerTargetVM</param-name>
    <param-value>11</param-value>
  </init-param>
  <load-on-startup>3</load-on-startup>
</servlet>

保存后重启Tomcat。

3. 检查并更新JDT编译器jar包

Tomcat 10.1.x默认搭载的ECJ(Eclipse Compiler for Java)版本应该支持Java 11,但如果环境中的lib/ecj-*.jar版本过低,会出现版本不兼容问题:

  • 查看lib目录下的ECJ jar包版本,确保是支持Java 11的版本(如ecj-4.24及以上)。
  • 若版本不符,从Tomcat官方下载对应版本的二进制包,提取lib/ecj-*.jar替换现有文件,重启Tomcat。

4. 验证修复效果

重启后查看catalina日志,若不再出现Unsupported source VM [11]相关警告,说明配置生效。此时测试GUI功能,确认无响应问题是否解决。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 18:45:13