java启动tomcat9闪退

article/2025/9/18 1:41:58

最近由于Java开发环境由eclipse换成idea,发现了一些很奇特的问题。遂写下来和大家分享下。

开发使用环境为(64位版)idea2017.3月版本+jdk9+tomcat9,发现之前配置好的tomcat不能使用了。

先说方法:将jdk从版本9更换为jdk8。如果有兴趣接着往下看即可。

排错过程如下:

之前eclipse使用的是32为的tomcat7,先将tomcat7换成64位后发现tomcat还不能正常使用,于是将tomcat更换成最新版本tomcat9。发现使用cmd命令启动tomcat安装目录/bin/startup.bat还是无法启动tomcat。

可以右键点击startup.bat,编辑,在文本的最后敲上pause,保存后重新运行startup.bat,这时候窗口不会再一闪而过,而是停留在桌面上(调试成功,把pause去掉即可)。

再次打开startup.bat文件会出现如下信息。

首先排除如下问题:tomcat的环境变量配置问题。结论:tomcat的环境变量在运行的时候就自动配上了。(原因在最后)。

接着考虑如下问题:端口问题(由于没有报错,所以这里不写,仅作提醒)、环境变量中path,Java的环境变量是不是放在最前面。另外可以在startup.bat文件的第一行后面添加一句话:set JAVA_HOME=[jdk安装目录]D("[ ]"去掉)。如图

再次使用cmd命令启动startup.bat文件后会出现很多信息,如图

之后在浏览器涨输入“http://localhost:8080/”发现还是不能启动tomcat服务器。

考虑如下问题:由于没有报错,是否是已经启动,却将tomcat服务关闭掉(由于这里没有出现类似问题,仅作提醒用)、或者是tomcat服务已经启动了,但是却没有正常启动、或者是之前配置有问题(已经排除)。这里重点考虑是否是没有正常启动,于是尝试使用cmd命令结束tomcat服务。在cmd命令界面中进入tomcat的bin目录,启动shutdown.bat文件,发现报错,欣喜若狂。因为终于报错了。如图

发现是一个很简单的Java虚拟机的参数错误,于是按照传统方法更改之后(这里放一个传送门:虚拟机参数错误),再次使用shutdown.bat命令发现问题依然存在。发现问题没有那么简单。经过一番科学搜索之后,终于在Oracle官网找到了答案。(传送门:Oracle官网说明)如图

chrome翻译如下:

所以,我们尝试将jdk版本从jdk9更换到jdk8中,启动tomcat服务。

ok大功告成,撒花。旁边的人拍了拍我的肩膀,上午干啥了,答曰:在启动tomcat服务

 

************分割线************

一、其实在idea中我们可以不用配置tomcat服务也可以正常进行Java Web开发,但是在配置JRebel for IntellIj之后会出现一个 错似曾相识的错误,如图:

那么,我们配置完tomcat之后可以启动了吗?

答案是不能!如图:

 

还是会出现:JRebel-JVMTI [ERROR] Process finished with exit code 1,

打开日志发现。Application Server was not connected before run configuration stop, reason:

Unable to ping server at localhost:1099

 

解决思路是:JRE_HOME没有配置,或编译器使用的jre版本是不正确的。还是同样的思路,我们在配置完JRE_HOME变量后,一定要配置一遍jre版本。如图

 

run-->Edit Configurations 选择jre版本为8的。完美解决,如图。

 

二、解释下为什么配置tomcat的时候不用配置tomcat的环境变量,结论:

1、判断CATALINA_HOME是否为空,为空则把当前目录设为CATALINA_HOME的值;

2、再判断catalina.bat是否存在,不存在则把当前目录设为CATALINA_HOME的值;

3、再判断环境变量下的catalina.bat是否存在,存在则调用bin目录下的“catalina.bat start”命令~

我们找到startup.bat文件,鼠标右键点击编辑,看到里面的内容:

rem Guess CATALINA_HOME if not defined		//为注释代码:判断 CATALINA_HOME 环境变量是否已经配置
set "CURRENT_DIR=%cd%"				//设置CURRENT_DIR 变量(当前工作目录)为:D:\Code\tomcat9\bin 
if not "%CATALINA_HOME%" == "" goto gotHome	//如果配置了 CATALINA_HOME 环境变量跳转执行 gotHome
set "CATALINA_HOME=%CURRENT_DIR%"          	 //如果没有设置,则设置 CATALINA_HOME 变量为:D:\Code\tomcat9\bin 
if exist "%CATALINA_HOME%\bin\catalina.bat" goto okHome //查看"当前工作目录\bin" 目录(即D:\Code\tomcat9\bin)下是否存在catalina.bat 文件,如存在跳转okHome
cd ..					//回到上级子目录,即:D:\Code\tomcat9 ,此时当前工作目录已经更改为:D:\Code\tomcat9
set "CATALINA_HOME=%cd%" 		// 更改 CATALINA_HOME 变量值为:D:\Code\tomcat9\bin    
cd "%CURRENT_DIR%"			//切换至当前工作目录:D:\Code\tomcat9

最后,我用一句话来鼓励你我,这群在路上前进的人:“所有的伟大,源于一个勇敢的开始”。

打完收工,有问题欢迎留言。转载要征得同意哦。


http://chatgpt.dhexx.cn/article/DRLxdcFo.shtml

相关文章

Tomcat启动后闪退系列问题

Tomcat安装配置系列问题 1.安装Tomcat2.启动失败--闪退第一步第二步第三步 结束语 装好tomcat后启动一直闪退,配置了半天环境变量也不见好,我都要裂开了。本博文是参考其他大佬的解决方案,整理了一下思路供大家参考,解决tomcat启动…

Tomcat启动闪退的原因和解决方法

作者:来个地瓜 来源:CSDN 原文:https://blog.csdn.net/qq904069486/article/details/80909780 版权声明:本文为博主原创文章,转载请附上博文链接! Tomcat启动一闪而过怎么办?这成为了许多刚接触…

Tomcat配置出错:Using CATALINA_OPTS: ““Tomcat启动闪退问题解决

文章目录 前言 一、问题描述二、定位问题1.CMD命令启动2.解决方法 前言 本篇问题所处环境 Tomcat 9Java11Win 10 一、问题描述 在安装配置Tomcat过程中,通过startup.bat脚本命令启动Tomcat发现Tomcat终端窗口一闪而过,发生闪退:Tomcat没有…

Tomcat 启动闪退问题解决集(八大类详细)

Tomcat启动闪退问题解决集(八大类详细) 目录 一、Java环境不对,Tomcat 不同版本需要的Java环境不同。 二、环境变量没有配置好 ?三、Tomcat端口被占用 四、配置文件编码问题 五、启动时需要的配置文件编写出错 六、部分相关文件丢失 …

Tomcat 启动闪退问题

1.花了一下午和一晚上都没解决Tomcat 启动闪退问题,首先是看下面这个博客,然后配置了很久环境变量没有成功 Tomcat 启动闪退问题解决集(八大类详细)http://t.csdn.cn/GUk0F 2.后面重下一个jdk11发现配置jdk和jre环境变量时&…

tomcat注册成服务后启动闪退的解决方案

1.查看jdk是否安装正确,是否配置环境变量(不是一定要配置) cmd进入tomcat的bin目录下,输入 tomcat(7/8)w.exe //ES//服务名 Service (7/8根据tomcat版本来定) 如果你配置了jdk环境变…

直接双击启动tomcat中的startup.bat闪退

免安装的tomcat双击startup.bat后,启动窗口一闪而过,而且tomcat服务未启动。 原因是:在启动tomcat是,需要读取环境变量和配置信息,缺少了这些信息,就不能登记环境变量,导致了tomcat的闪退。 …

vue权限控制路由(vue-router 动态添加路由)

用户登录后返回权限菜单,前端根据权限菜单动态添加路由,然后再动态生成菜单栏。 思路如下: 一、定义初始化默认路由。 二、动态配置路由,这里是把所有组件中相应的路由配置成一个个的对象,根据后台返回的菜单tree一个个…

基于VUE实现前端动态路由权限控制

需求 最近在项目中遇到权限控制的问题,由于自己接触前端也不久,对于路由这方面知识还有所欠缺,因此一直在网上找寻各种解决方案。最终还是看到花裤衩大佬的博客,终于对前端实现路由权限控制有了些许思路。 传送门:手摸…

【Vue路由(router)进一步详解】

Vue路由(router)进一步详解 query属性具体实例代码如下: params属性具体实例代码如下: props属性replace属性编程式路由导航路由缓存具体代码: 总结 本篇文章主要针对已经掌握Vue路由(router)基…

vue 实现动态路由

1、什么是动态路由? 2、动态路由的好处 3、动态路由如何实现 1、什么是动态路由? 动态路由,动态即不是写死的,是可变的。我们可以根据自己不同的需求加载不同的路由,做到不同的实现及页面的渲染。动态的路由存储可分…

16-Vue3 动态路由权限控制

Vite2Vue3TypeScriptElement-plus脚手架搭建系列 ✅01-初始化 Vite 项目 ✅02-配置 Vite2 环境变量 ✅03-Vite2 配置及说明 ✅04-Vue3 使用 SCSS ✅05-Vue3 路由配置 ✅06-TypeScript 配置及说明 ✅07-Vue3 使用 axios ✅08-Vue3 axios 对象封装 ✅09-ESLint 配置及说明 ✅10-…

【Vue路由守卫】

Vue路由守卫 Vue路由守卫全局路由守卫全局前置守卫全局后置守卫实例代码: 独享守卫组件内守卫总结 Vue路由守卫 路由守卫,简单理解来说就是,当用户要进行一些操作时,我需要用户的一些信息或数据或行为,我判断过后&…

vue 动态路由实现 后端控制权限时的前端处理

前端思路: 上图中 获取路由信息 ,可以是后端控制的,可以是前端根据用户信息从路由表中筛选的。 此处只讲解后端存储路由信息的情况 组织路由信息 请求后台,获取返回结果,结果有两种可能,一种是组合好的…

vue-router路由权限控制的两种实现方案

前言 最近在抽时间写一套后台管理系统框架模板(vueelement-ui),记录一些问题的解决方案。文章没什么顺序,就想到什么写什么了,也都是之前工作上碰到的问题。 抛出问题 Vue项目路由权限控制怎么实现? 实现…

Vue路由

目录 一、路由的概念 二、事前准备 三、 路由的相关知识点 3.1 路由的基本认识 3.2 路由小案例 3.3 路由模式的切换 3.4 指定路由的渲染位置 3.5 声明式导航 3.5.1 无参模式 3.5.2 传参模式 3.5.3 $route 与$router的区别 3.6 编程式导航 3.6.1 第一种get方…

Vue动态路由使用(后端控制)

使用VUE开发后台管理系统 完全由后端控制左边菜单项思路 在传统开发后台管理系统时,都会涉及权限控制这一功能需求 即:根据不同登录的角色账号来使用该账号拥有的功能,也就是说系统左边的菜单栏不是固定不变的,而是根据登录账号的…

Vue学习:路由

2. 路由 2.1 前端路由的发展历程 2.1.1 认识前端路由 路由其实是网络工程中的一个术语: 在架构一个网络时,非常重要的两个设备就是路由器和交换机。 ​ 当然,目前在我们生活中路由器也是越来越被大家所熟知,因为我们生活中都…

vue权限控制和动态路由

思路 登录:当用户填写完账号和密码后向服务端验证是否正确,验证通过之后,服务端会返回一个token,拿到token之后(我会将这个token存贮到localStore中,保证刷新页面后能记住用户登录状态)&#xf…

Vue 路由权限控制

当我们在做后台管理系统的时候,都会涉及到系统左侧的菜单树如何动态显示的问题。目前基本上都是RBAC的解决方案,即Role-Based Access Control,权限与角色相关联,用户通过成为适当角色的成员而得到这些角色的权限。这就极大地简化了…