首页 > 解决方案 > Tomcat10 无法启动 bootstrap.jar 未找到

问题描述

我用 java 15 编译了一个 Servlet,并试图用 Tomcat 10 运行它,但得到了错误:

“java.lang.UnsupportedClassVersionError:Servlet1 已由 Java 运行时的更新版本编译”

查看 Tomcat 属性,我注意到 Tomcat 使用的 Java 8 也安装在我的 PC 上。

所以我去了Java选项卡下的Tomcat属性并放下jdk-15.0.1\bin\jvm.dll -> Tomcat不再启动。

我注意到在 Java 选项卡下的相同属性中,有“Java Classpath”,但它的值是 Tomcat-Dir\bin\bootstrap.jar(我认为)。然后我将其更改为 jdk-15.0.1\bin (及其变体)。

现在我的问题 - Tomcat 不再启动“ClassNotFoundException ... Bootstrap”我可以通过选中“使用默认值”将路径更改回 JVM,但我不记得“Java 类路径”下的确切路径。有人能告诉我Tomcat10的默认值是什么吗?我希望至少能够再次启动 Tomcat。

我说的是 Tomcat 属性中的这个选项卡

标签: javatomcat

解决方案


当Procrun 服务应用程序的体系结构(如在您的 Tomcat 安装中安装)与以下体系结构commons-daemon.log不匹配时,会发生您描述的问题(立即服务启动失败,Tomcat 的日志中没有任何内容,并且 中有一条短线) : 32 位可执行文件无法加载 64 位库,反之亦然。bin\tomcat10.exejvm.dll

您可以使用tomcat10.exe version(仅在管理员中工作cmd))和进行确认java -version

要解决这个问题,您需要下载完整的 Apache Commons Daemon Windows 分发版(参见下载区)并替换tomcat10.exe为适当的prunsrv.exe可执行文件(zip 存档中有两个版本)。

关于哪些库应该在 Tomcat 的类路径中,您只需要bin\bootstrap.jarbin\tomcat-juli.jar服务器的安装文件夹中即可。

备注:Tomcat 的 Windows MSI 安装程序包含两个prunsrv.exe版本,但根据您在安装期间选择的 Java 可执行文件的体系结构仅安装一个。可能你有一个 32 位 Java 8 和 64 位 Java 15。很长一段时间java.com页面自动提出了 32 位版本的 Java。


推荐阅读