java - 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。
解决方案
当Procrun 服务应用程序的体系结构(如在您的 Tomcat 安装中安装)与以下体系结构commons-daemon.log
不匹配时,会发生您描述的问题(立即服务启动失败,Tomcat 的日志中没有任何内容,并且 中有一条短线) : 32 位可执行文件无法加载 64 位库,反之亦然。bin\tomcat10.exe
jvm.dll
您可以使用tomcat10.exe version
(仅在管理员中工作cmd
))和进行确认java -version
。
要解决这个问题,您需要下载完整的 Apache Commons Daemon Windows 分发版(参见下载区)并替换tomcat10.exe
为适当的prunsrv.exe
可执行文件(zip 存档中有两个版本)。
关于哪些库应该在 Tomcat 的类路径中,您只需要bin\bootstrap.jar
在bin\tomcat-juli.jar
服务器的安装文件夹中即可。
备注:Tomcat 的 Windows MSI 安装程序包含两个prunsrv.exe
版本,但根据您在安装期间选择的 Java 可执行文件的体系结构仅安装一个。可能你有一个 32 位 Java 8 和 64 位 Java 15。很长一段时间java.com页面自动提出了 32 位版本的 Java。
推荐阅读
- ubuntu - 已完成作业的 Kubernetes 集群不稳定;kubelet 日志充满“http2:没有可用的缓存连接”
- r - 允许具有不同组合长度的几个字母的所有可能排列
- react-native - 为什么图标没有显示在 createMaterialTopTabNavigator 中?
- reactjs - 嵌套 NavLink 时 React 抛出警告
- npm - 禁止在客户端计算机上取消发布 npm
- internet-explorer - IE 不渲染带有 x-content-type-options 标头的位图图像
- android - 如何解决Android开发中的海量渲染问题
- python - 'strsep' 导致 Linux 内核冻结
- c# - 通用复合模式中的继承
- ruby-on-rails - 我在尝试 Gem 更新时遇到问题,服务器没有返回有效文件