1. Tomcat 7 启动报 endorsed.dirs 不支持问题到底出在哪如果你在 Eclipse 里启动 Tomcat 7.0.86控制台刷出这么一行-Djava.endorsed.dirsD:\Tomcat\apache-tomcat-7.0.86\endorsed is not supported. Endorsed standards and standalone APIs in ...第一反应通常是「Tomcat 装坏了」或者「JDK 版本不对」。其实都不是。这条报错的本质是你用的 JDK 已经不再支持 endorsed 机制但启动参数里还留着-Djava.endorsed.dirs。JVM 在解析启动参数时发现这个属性已经废弃于是直接抛错并拒绝继续。java.endorsed.dirs是 JDK 早期用来「覆盖」JDK 自带标准库的机制。比如你想用更新版本的 JAXB、SAAJ 或某个 XML 解析器就把 jar 丢进endorsed目录JVM 会优先加载它们。这个设计在 JDK 8 之后被彻底移除JDK 9 引入模块化后更是完全不存在。Tomcat 7 的catalina.bat/catalina.sh里默认会拼出这个参数Eclipse 的 Tomcat 插件又会把它写进 VM arguments于是老配置遇上新 JDK就炸了。这篇面向的是在 Eclipse 里跑 Tomcat 7.0.86、JDK 用的是 8 或更高版本、启动就报 endorsed 不支持的开发者。我会把「Eclipse VM arguments 怎么改」「catalina.bat / setenv.bat 怎么排查」「怎么用 TaoToken 把 AI 辅助排查链路串起来」三件事讲清楚让你一次定位、一次改对。2. 先搞清楚 endorsed 机制为什么在 JDK 8 后失效2.1 endorsed 机制原本干什么早期 JDK 里有个lib/endorsed目录你把特定 jar 放进去JVM 启动时会把这些 jar 加到 bootclasspath 前面从而「覆盖」JDK 自带的标准实现。典型场景是升级 JAXB 或 Xerces 版本。Tomcat 7 为了兼容这种玩法在启动脚本里默认加了set JAVA_OPTS%JAVA_OPTS% -Djava.endorsed.dirs%CATALINA_HOME%\endorsed2.2 JDK 8 之后发生了什么JDK 8 开始官方明确标记 endorsed 机制为废弃JDK 9 引入 JPMS 模块系统后java.endorsed.dirs被彻底移除。此时 JVM 遇到这个参数行为是识别到不支持的属性直接报错退出而不是静默忽略。所以你会看到控制台那行is not supported。关键点报错不是 Tomcat 的错也不是你项目代码的错而是启动参数与 JDK 版本不匹配。只要把这个参数从所有启动入口里清掉问题就消失。2.3 为什么 Eclipse 里特别容易踩Eclipse 的 Tomcat 集成WTP会在 Run Configuration 里生成一份 VM arguments这份参数和你手动改的catalina.bat是两套独立入口。很多人只改了catalina.bat但 Eclipse 启动时根本不走那个脚本走的是它自己拼的参数于是改了没用。反过来只改 Eclipse 不改脚本命令行启动又会复现。所以排查必须两头都看。3. TaoToken 前置把 AI 辅助排查链路先搭好排查这类「参数残留 版本不匹配」的问题最费时间的不是改而是定位到底是哪个入口塞了这个参数、当前 JDK 到底几版、还有没有别的废弃参数。这时候让 AI 帮你读日志、列排查清单会快很多。我习惯用 TaoToken 统一管理模型通道一个 Key 走通对话、编码和 API 调用省得每个工具单独配。TaoToken 是一个聚合式的大模型 API 接入平台你可以把它理解成「一个 Key 对接多家模型」的通道层。对这次排查来说它的用处是把 Tomcat 报错日志、catalina.bat片段、Eclipse VM arguments 一起丢给模型让它帮你列出「哪些参数在 JDK 8 已废弃」。适合谁经常在本地调 Java Web 项目、需要 AI 帮忙读日志和生成排查脚本的开发者。先拿 Key。打开控制台https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi_keysutm_campaignrewrite登录后创建一个 API Key复制保存。注意 Key 只在创建时完整显示一次丢了就重建。拿到 Key 后接入文档在这里https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite如果你只是想先跟模型聊聊这个报错、让它给排查思路直接用模型对话页https://taotoken.net/chat?utm_sourcetaotoken_aicg_blog_endutm_contentmodel_chatutm_campaignrewrite如果你打算长期用 AI 辅助写代码、跑 Agent 排查Coding Plan 更划算https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding_planutm_campaignrewriteAPI 基础地址统一是https://taotoken.net/api这个地址不带任何查询参数配置到客户端里即可。4. 可复制配置Eclipse VM arguments 与脚本清理骨架4.1 Eclipse 里删掉残留参数打开 Eclipse按这个路径走Run - Run Configurations - 左侧选中你的 Tomcat 配置 - 右侧 Arguments 选项卡 - VM arguments 区域在 VM arguments 里找到类似这一行-Djava.endorsed.dirsD:\Tomcat\apache-tomcat-7.0.86\endorsed把它整行删掉。注意是整行删除不要只删值留个空-Djava.endorsed.dirs那样某些 JDK 仍会报错。删完后点 Apply再点 Run。改完后的 VM arguments 骨架大概长这样只保留必要的内存和编码参数-Xms256m -Xmx512m -XX:PermSize128m -XX:MaxPermSize256m -Dfile.encodingUTF-8 -Dcatalina.baseD:\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0 -Dcatalina.homeD:\Tomcat\apache-tomcat-7.0.86 -Dwtp.deployD:\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps -Djava.io.tmpdirD:\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\temp注意-XX:PermSize和-XX:MaxPermSize在 JDK 8 之后也被移除了如果你用的是 JDK 8这两行同样要删否则会报Unrecognized VM option。这是同一个坑的「兄弟参数」一起清掉。4.2 catalina.bat 排查清单Eclipse 之外命令行启动走的是catalina.bat。打开D:\Tomcat\apache-tomcat-7.0.86\bin\catalina.bat搜索endorsedfindstr /n endorsed catalina.bat如果输出里有类似set JAVA_OPTS%JAVA_OPTS% -Djava.endorsed.dirs%CATALINA_HOME%\endorsed把这行注释掉或删除。Tomcat 7.0.86 的脚本里通常还有一段判断逻辑会检查endorsed目录是否存在存在才加参数。如果你把endorsed目录删了这段逻辑自然不触发。两种做法都行推荐直接删参数行更彻底。4.3 setenv.bat 排查清单setenv.bat是你自己放的自定义环境变量文件优先级高于catalina.bat里的默认值。检查bin目录下有没有这个文件dir D:\Tomcat\apache-tomcat-7.0.86\bin\setenv.bat如果有打开搜endorsed和PermSize同样清理。很多人忘了这个文件结果改了catalina.bat还是报错就是因为setenv.bat在后面又把它加回来了。4.4 确认当前 JDK 版本在命令行执行java -version如果输出是1.8.0_xxx或更高那 endorsed 参数就是必须删的。如果输出是1.7或更低理论上不会报这个错那你要检查是不是 Eclipse 里配了另一个 JDK。Eclipse 的 JDK 在Window - Preferences - Java - Installed JREs确认这里选中的 JRE 和命令行java -version一致。不一致是另一个常见坑命令行是 JDK 7Eclipse 用的是 JDK 8于是只有 Eclipse 报错。5. 验证请求确认报错消失且服务正常起来5.1 Eclipse 内验证改完 VM arguments 后在 Servers 视图里右键 TomcatClean 一下再启动。观察控制台正常输出应该类似信息: Starting Servlet Engine: Apache Tomcat/7.0.86 信息: Server startup in 3421 ms不再出现is not supported那行。如果还有说明还有别的入口没清干净回到第 4 节逐项排查。5.2 用 TaoToken 验证 AI 排查链路服务起来后顺手验证一下你的 AI 通道是否可用。用 curl 发一个最小请求curl https://taotoken.net/api/v1/chat/completions \ -H Authorization: Bearer 你的API_KEY \ -H Content-Type: application/json \ -d { model: gpt-4o-mini, messages: [ {role: user, content: Tomcat 7 在 JDK 8 下报 java.endorsed.dirs is not supported列出三个排查入口} ] }返回里能看到模型给出的排查建议说明 Key 和通道都正常。这一步的意义是以后遇到类似报错你可以直接把日志贴给模型让它帮你列清单而不是自己一行行翻脚本。5.3 命令行验证命令行启动一次确认脚本入口也干净cd D:\Tomcat\apache-tomcat-7.0.86\bin startup.bat看logs\catalina.log同样不应出现 endorsed 报错。两个入口都验证过才算真正修完。6. 本篇常见错排查6.1 改了 Eclipse 还是报错最常见原因是setenv.bat或catalina.bat里还有残留。用findstr全局搜一遍findstr /s /n endorsed D:\Tomcat\apache-tomcat-7.0.86\bin\*.bat把所有命中行都清掉。另外检查 Eclipse 的 Server 配置有没有「Publish」旧参数必要时删掉 Server 重新建一个。6.2 报 Unrecognized VM option PermSize这是同一个坑的兄弟问题。JDK 8 移除了永久代-XX:PermSize和-XX:MaxPermSize都不再支持。在 VM arguments 里删掉这两行换成-XX:MetaspaceSize和-XX:MaxMetaspaceSize如果需要限制的话。6.3 报错消失但服务起不来那可能是另一个问题比如端口占用、webapps 部署失败。看logs\localhost.log和catalina.log的具体堆栈。这时候可以把日志贴到 TaoToken 的模型对话页让它帮你定位https://taotoken.net/chat?utm_sourcetaotoken_aicg_blog_endutm_contentmodel_chatutm_campaignrewrite6.4 换了 JDK 版本后复现如果你把 JDK 从 7 升到 8之前能跑的配置会突然报错因为 JDK 7 容忍这个参数、JDK 8 不容忍。升级 JDK 后第一件事就是全局搜endorsed和PermSize提前清掉。6.5 API 调用返回 401检查 Key 是否复制完整、有没有多余空格。Key 只在创建时显示一次如果丢了就重新生成。接入细节看文档https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite7. 把 Key 和通道固定下来下次排查直接复用这次排查的核心其实就一句话JDK 8 不再支持 endorsed所有入口里的-Djava.endorsed.dirs都要清掉。Eclipse 的 VM arguments、catalina.bat、setenv.bat三个入口一个都不能漏顺手把PermSize也清了。我自己的做法是把 TaoToken 的 Key 配到常用的 AI 客户端里遇到 Tomcat、JDK 这类版本兼容报错直接把控制台日志整段贴过去让它先列「哪些参数在当前 JDK 已废弃」再对照着改。这样比一行行翻脚本快得多。如果你也想把这条链路固定下来去控制台建个 Keyhttps://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi_keysutm_campaignrewrite长期写 Java Web、经常要 AI 辅助读日志和生成排查脚本的话Coding Plan 会更省https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding_planutm_campaignrewriteAPI 地址记住是https://taotoken.net/api配置时不要带多余路径。下次再遇到is not supported这类报错先搜参数名、再对 JDK 版本、最后清所有入口基本一次就能定位。
企业数字化 ERP 产品动态
相关推荐
Gauge 学习1安装与入门:在 VsCode 中配置 TaoToken 统一 Key 跑通 BDD 首个用例 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/27 22:38:31
OpenClaw 本地化部署实战:AI“养龙虾”功能拆解、工具调用框架与风险警示 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/27 22:38:25
生物统计学专业校招面试,生存分析和缺失数据处理怎么复习? 你作为生物统计学专业参加校招的应届生,复习生存分析和缺失数据处理直接按照核心概念扫盲、实操全流程走通、面试场景针对性打磨三步推进即可,这个方案适配本科及硕士阶段有基础数理统计功底、求职目标为药企统计师、临床数据分析师、公卫科研岗的应届生… · 2026/9/27 22:38:25
TrOCR微调实战:圆形印章检测识别全流程解析 简介:面向企业文档自动化与电子签章核验场景,这份基于预训练模型微调的端到端公章识别系统资料,适合有一定深度学习基础、希望实现圆形印章检测与印文识别的开发者或学习者。资源共二十八个文件,以Python脚本为核心,覆… · 2026/9/27 23:10:48
VOC转YOLO船只检测数据集:格式转换与训练避坑指南 简介:面向计算机视觉研究人员、算法工程师与海事应用开发者,船只检测数据集聚焦船舶目标检测任务,覆盖海洋监控、航海安全、港口管理等实际应用场景,包含多种角度拍摄的船只图片,有助于模型适应视角变化、光照波动与遮… · 2026/9/27 23:10:48
机会约束编程与样本平均近似:Matlab代码实战与避坑指南 简介:针对机会约束优化问题的样本平均近似求解,这套Matlab代码提供了完整实现。机会约束优化允许约束在特定置信水平下成立,而SAA通过随机抽样将其转化为可解的确定性优化问题,代码正是围绕这一思路编写,适合计算机、电… · 2026/9/27 23:10:48
VOC转YOLO:船只检测数据集格式转换与训练避坑指南 简介:包含VOC与YOLO两种标注格式的船只检测数据集,聚焦海洋监控、航海安全与港口管理等场景中的目标识别问题,适合计算机视觉研究者、算法工程师用于模型训练与效果验证。资源包内共25683个文件,其中8561张jpg原图与8561份xml&… · 2026/9/27 23:10:48
Django+Echarts招聘数据可视化:从数据建模到交互看板实战 简介:这是围绕招聘数据可视化分析场景的 Django/Python 项目源码包,适合 Web 开发与数据分析初学者,完整覆盖数据抓取、清洗、统计、接口封装到 ECharts 动态图表展示的实现链路。包内共 165 个文件,以 JavaScript、JSON、Python、… · 2026/9/27 23:10:48
深度学习工业缺陷检测全流程:数据标注、模型训练与产线落地 简介:面向制造业产线质量控制和自动化检测场景的工业缺陷检测系统资料包,基于深度学习视觉识别算法,覆盖卷积神经网络模型训练、高精度图像处理与异常检测流程,适合算法工程师、产线质检人员以及相关专业学习者用来搭建缺陷识别原… · 2026/9/27 23:10:42
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现 简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01
汕头网站建设制作厂家避坑指南:5大注意事项救急 汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习 简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现 简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01
汕头网站建设制作厂家避坑指南:5大注意事项救急 汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习 简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01