spring-boot-devtools debug SilentExitException

spring-boot-devtools debug SilentExitException:springboot热部署debug模式进入SilentExitException

/** Copyright 2012-2019 the original author or authors.** Licensed under the Apache License, Version 2.0 (the "License");* you may not use this file except in compliance with the License.* You may obtain a copy of the License at**      https://www.apache.org/licenses/LICENSE-2.0** Unless required by applicable law or agreed to in writing, software* distributed under the License is distributed on an "AS IS" BASIS,* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.* See the License for the specific language governing permissions and* limitations under the License.*/package org.springframework.boot.devtools.restart;import java.lang.Thread.UncaughtExceptionHandler;
import java.util.Arrays;/*** {@link UncaughtExceptionHandler} decorator that allows a thread to exit silently.** @author Phillip Webb* @author Andy Wilkinson*/
class SilentExitExceptionHandler implements UncaughtExceptionHandler {private final UncaughtExceptionHandler delegate;SilentExitExceptionHandler(UncaughtExceptionHandler delegate) {this.delegate = delegate;}@Overridepublic void uncaughtException(Thread thread, Throwable exception) {if (exception instanceof SilentExitException) {if (isJvmExiting(thread)) {preventNonZeroExitCode();}return;}if (this.delegate != null) {this.delegate.uncaughtException(thread, exception);}}private boolean isJvmExiting(Thread exceptionThread) {for (Thread thread : getAllThreads()) {if (thread != exceptionThread && thread.isAlive() && !thread.isDaemon()) {return false;}}return true;}protected Thread[] getAllThreads() {ThreadGroup rootThreadGroup = getRootThreadGroup();Thread[] threads = new Thread[32];int count = rootThreadGroup.enumerate(threads);while (count == threads.length) {threads = new Thread[threads.length * 2];count = rootThreadGroup.enumerate(threads);}return Arrays.copyOf(threads, count);}private ThreadGroup getRootThreadGroup() {ThreadGroup candidate = Thread.currentThread().getThreadGroup();while (candidate.getParent() != null) {candidate = candidate.getParent();}return candidate;}protected void preventNonZeroExitCode() {System.exit(0);}static void setup(Thread thread) {UncaughtExceptionHandler handler = thread.getUncaughtExceptionHandler();if (!(handler instanceof SilentExitExceptionHandler)) {handler = new SilentExitExceptionHandler(handler);thread.setUncaughtExceptionHandler(handler);}}static void exitCurrentThread() {throw new SilentExitException();}private static class SilentExitException extends RuntimeException {}}

=打开eclipse把下面的√去掉即可=

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/759787.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

软考网工学习笔记(6) 广域通信网

公共交换电话网(pstn) 在pstn是为了语音通信而建立的网络。从20世纪60你年代开始用于数据传输 电话网有三个部分组成: 本地回路 ,干线 和 交换机 。 干线 和 交换机 一般采用数字传输和交换技术 ,而 本地回路基本采…

Ubutun部署docker,并使用docker部署springboot项目,关闭软件可继续访问

工具为xftp和xshell。 我这里使用的Ubuntu的版本是20.04的,话不多说,我们来直接上代码。 首先我们最好使用管理员权限进行操作,预防操作时遇到权限问题。 部署docker 登入管理员 不登入管理员也没关系。 su根据提示输入密码,进…

2024蓝桥杯每日一题(并查集)

备战2024年蓝桥杯 -- 每日一题 Python大学A组 试题一:奶酪 试题二:合并集合 试题三:连通块中点的数量 试题四:网络分析 试题一:奶酪 【题目描述】 现有一块大奶酪,它的高度为 hℎ…

shell source脚本中如何读取另外一个脚本中的变量

目录 前言语法举例注意 前言 要在一个Shell脚本中读取另一个Shell脚本中的变量,可以使用source命令或者.命令。这些命令用于在当前Shell环境中运行指定的脚本,从而使得脚本中的变量在当前Shell中可用。 语法 #!/bin/bash # 读取另一个Shell脚本中的变…

金智维的务实主义,打响大模型落地“突围战”

今年以来,新质生产力成为全社会关注的焦点。新质生产力的特征之一,就是深化新技术应用,尤其是AI及大模型,要加速落地到实际业务场景中,为千行万业提质增效。 2024是大模型技术做深、价值做实的一年。3月20日&#xff0…

【C++】详解智能指针

目录 一、智能指针的作用二、内存泄露1、什么是内存泄露2、内存泄漏分类3、如何避免内存泄露 三、智能指针的使用及原理1、RAII2、智能指针的原理3、std::auto_ptr4、std::unique_ptr5、std::shared_ptr1、std::shared_ptr原理2、std::shared_ptr的线程安全问题4、std::shared_…

python爬虫学习第二天----类型转换

🎈🎈作者主页: 喔的嘛呀🎈🎈 🎈🎈所属专栏:python爬虫学习🎈🎈 ✨✨谢谢大家捧场,祝屏幕前的小伙伴们每天都有好运相伴左右,一定要天天…

电脑如何录视频?进阶教程来了!

随着科技的飞速发展,视频录制已成为我们日常生活和工作中不可或缺的一部分。无论是进行在线教育、制作教学视频,还是记录游戏过程、直播分享,录屏都扮演着至关重要的角色。可是您知道电脑如何录视频吗?本文将介绍两种电脑录视频的…

稀碎从零算法笔记Day23-LeetCode:二叉树的最大深度

题型:链表、二叉树的遍历 链接:104. 二叉树的最大深度 - 力扣(LeetCode) 来源:LeetCode 题目描述 给定一个二叉树 root ,返回其最大深度。 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上…

vue2从基础到高级学习笔记

在实际的工作中,我常使用vue的用法去实现效果,但是你要是问我为什么这样写,它的原理是啥就答不上来了。对vue的认知一直停留在表面,写这篇文章主要是为了理清并弄透彻vue的原理。 学习目标 1 学会一些基本用法的原理 2 弄懂vue核心设计原理 3 掌握vue高级api的用法 一 vue…

环境安装篇 之 安装kubevela

云原生学习路线导航页(持续更新中) 本文是 环境安装 系列文章,介绍 oam规范标准实施项目 kubevela 的安装详细步骤kubevela 官方安装文档:https://kubevela.io/zh/docs/installation/kubernetes/ 1.CentOS 安装kubevela 1.1.前提…

电脑数据安全新篇章:备份文件,守护您的珍贵数据

备份文件,无疑是电脑使用中不可或缺的重要一环。在数字化时代,我们的工作、学习和生活都离不开电脑,而电脑中的数据更是我们宝贵的财富。一旦数据丢失或损坏,可能会带来无法估量的损失。因此,备份文件的重要性不言而喻…

Vue.js+SpringBoot开发高校宿舍调配管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能需求2.1 学生端2.2 宿管2.3 老师端 三、系统展示四、核心代码4.1 查询单条个人习惯4.2 查询我的室友4.3 查询宿舍4.4 查询指定性别全部宿舍4.5 初次分配宿舍 五、免责说明 一、摘要 1.1 项目介绍 基于JAVAVueSpringBootMySQL的…

力扣hot100:4. 寻找两个正序数组的中位数(归并排序/二分/双指针)

目录 一、暴力排序 二、归并排序 三、双指针 四、二分查找 如果本题不说明时间复杂度应该为O(log(mn),那么本题应该是一个简单题,解决的方法有很多。这里先列举出普通方法,再来讨论二分。 一、暴力排序 不管啦,直接纯暴力&…

黑白照片怎么变彩色?3个实用上色方法分享

黑白照片怎么变彩色?这是一个让许多人感到好奇和期待的问题。随着科技的发展,现在已经有多种软件可以将黑白照片转变为彩色,让历史的回忆重新焕发出生机。这些软件利用先进的算法和图像处理技术,能够精准地还原出照片中的色彩&…

【前端】卡片渐变色阴影效果 旋转动画

【前端】卡片渐变色阴影效果 旋转动画 <!DOCTYPE html> <html lang"en"> <head> <meta charset"UTF-8"> <meta name"viewport" content"widthdevice-width, initial-scale1.0"> <title>Breathing…

【G3D笔记】AI生成式3D算法相关环境安装爬坑笔记

【G3D笔记】AI生成式3D算法相关环境安装爬坑笔记) 1、 RayMarching1.1 error C1189: #error: You need C++17 to compile PyTorch1.2 raymarching安装环境版本测试1.3 host_config.h(231): fatal error C1083: 无法打开包括文件: “crtdefs.h”2、Tiny-Cuda-nn2.1 HTTP/2 stre…

mysql体系结构及主要文件

目录 1.mysql体系结构 2.数据库与数据库实例 3.物理存储结构​编辑 4.mysql主要文件 4.1数据库配置文件 4.2错误日志 4.3表结构定义文件 4.4慢查询日志 4.4.1慢查询相关参数 4.4.2慢查询参数默认值 4.4.3my.cnf中设置慢查询参数 4.4.4slow_query_log参数 4.4.…

opengl日记10-opengl使用多个纹理示例

文章目录 环境代码CMakeLists.txt文件内容不变。fragmentShaderSource.fsvertexShaderSource.vsmain.cpp 总结 环境 系统&#xff1a;ubuntu20.04opengl版本&#xff1a;4.6glfw版本&#xff1a;3.3glad版本&#xff1a;4.6cmake版本&#xff1a;3.16.3gcc版本&#xff1a;10.…

设计模式之工厂方法模式解析

工厂方法模式 1&#xff09;问题 简单工厂模式 当需要引入新产品时&#xff0c;由于静态工厂方法通过所传入参数的不同来创建不同的产品&#xff0c;需要修改工厂类的源代码。 2&#xff09;概述 针对不同的产品提供不同的工厂&#xff0c;系统提供一个与产品等级结构对应…