【Galois工具开发之路】给你的JVM安装一个插件~

告别疯狂重启!用DCEVM在IDEA里实现SpringBoot类热替换的避坑指南(2024实测版) 本文提供了一份2024年实测的详细指南,帮助开发者在IntelliJ IDEA中配置DCEVM和HotSwapAgent,实现SpringBoot应用的热加载(类热替换),从而告别频繁重启,显著提升开发调试效率。文章深入解析了核心原理,并重点解决了环境配置、常见报错等实战中的疑难问题。 阅读详情

什么是DCEVM

Dcevm(DynamicCode Evolution Virtual Machine)是Java Hostspot的一个扩展插件,属于开源性工具,非JDK官方提供,它允许你在运行环境下修改加载的类文件。当前虚拟机只允许修改方法体(Method,Body),而Decvm可以增加、删除类属性、方法,甚至改变一个类的父类。

Galois是一个开源的SpringBoot项目热部署工具,提供对SpringBoot,Mybatis等三方框架的热部署支持。使用Galois需要您的JDK安装DCEVM扩展,顾名思义,可以实现增删改方法甚至是属性的热部署实现。

下载DCEVM

官方Github地址:https://github.com/dcevm/dcevm
官方Release下载地址:https://github.com/dcevm/dcevm/releases
在这里插入图片描述

以上是DCEVM的官方仓库地址,然而却不一定适配你的JDK版本,如果有JDK8较新的版本或以上,可以到以下地址下载

楼主当前使用 JDK 1.8.0_211 版本,原本是需要下载以下DCEVM版本。但是吧,目前Window系统的包需要自己下载源码编译,流程较为复杂,因此只能反向升级,我自己委屈求全,把JDK降到 1.8.0-181版本,这样就能用上了,DCEVM严格限制JDK版本的。
推荐到Oracle官网下载JDK https://www.oracle.com/java/technologies/javase/javase8-archive-downloads.html
在这里插入图片描述

https://github.com/TravaOpenJDK/trava-jdk-8-dcevm/releases

在这里插入图片描述

安装DCEVM

  • 下载jar包,通过java的jar命令启动,如下。切记,执行该命令的CMD或PowerShell窗口,需要使用管理员权限打开
java -jar .\DCEVM-8u181-installer-build2.jar
  • 在弹出来的界面中,选择你的JDK,进行修补
    • 修补过程中,所有java进程实例都要关闭
    • 达到效果如下【已替换DCEVM,且能正常显示DCEVM版本号,如果显示could not get decversion 则表示安装失败】
  • 验证安装成功,可以在控制台窗口执行 java -version,这时候就会输出带有** Dynamic Code Evolution**字样的java版本说明了,如下图所示
    在这里插入图片描述

问题记录

  • 版本说明
    • 官方仓库最高支持JDK 1.8.0-181,更高版本需要到文中另一个github仓库找jar包,linux和macos有直接编译的,window则需要自己编译源码,目前【2023-02-20】是这样
    • DCEVM严格要求版本一一对应,基本没有高版本兼容低版本的说法,如果是JDK8-181,则就要下载181的jar包

Galois热部署工具

IDEA 使用 DCEVM + HotSwapAgent实现StringBoot热加载 1.安装DCEVM 需要去官网下载对应的jdk版本:https://github.com/dcevm/dcevm/releases 如:我的jdk是1.8.0_92 然后下载对应的jar包 下载完之后就是安装 必须是管理员使用 java -jar 命令 输入完命令之后 会弹出程序进行安装 如果有多个jdk,那么就选择你正在使用的jdk进行安装 点击 [Install DCEVM as altjvm ] 进行安装。 安装成功之后,会显示Yes 如图: 如果... 阅读详情

相关推荐

Android加密开发实战:Spongy Castle集成、国密算法与性能优化指南

在移动应用开发中,数据加密是保障用户隐私和信息安全的基石。其核心原理是通过密码学算法对数据进行转换,确保只有授权方才能访问原始内容。这项技术的价值在于为敏感数据(如登录凭证、支付信息)提供机密性、完整性和认证性,是金融、社交、企业应用等场景的必备能力。然而,Android平台内置的加密库存在算法支持不全和版本兼容性问题,例如缺乏国密算法(SM2/SM3/SM4)支持,且旧系统上高级模式(如AES-GCM)可能不可用。这促使开发者寻求更强大的解决方案。Spongy Castle作为Bouncy Castle的

weixin_30553777的博客 417

dcevm

什么是dcevm dcevm(DynamicCode Evolution Virtual Machine)是java hostspot的补丁(严格上来说是修改),允许(并非无限制)在运行环境下修改加载的类文件.当前虚拟机只允许修改方法体(method bodies),decvm,可以增加 删除类属性、方法,甚至改变一个类的父类。原理参见Dynamic Code Evolution for Java dcevm 原理 dcevm 是一个开源项目,遵从GPL 2.0。源文件及执行...

I want to know a little more. 2637

Java AES加密解密实战:从原理到生产环境最佳实践

数据加密是信息安全领域的核心技术,通过特定算法将明文转换为不可读的密文,确保数据在存储和传输过程中的机密性。其核心原理基于密码学中的替换与置换操作,现代加密算法如AES(高级加密标准)采用对称密钥体系,加密与解密使用同一密钥,在效率与安全性间取得平衡。这项技术的价值在于为敏感信息提供基础保护层,是满足合规要求、防止数据泄露的工程基石,广泛应用于金融支付、身份认证、配置管理等涉及用户隐私与业务安全的场景。本文聚焦于Java生态中的AES实现,针对密钥管理、CBC/GCM模式选择、IV处理等高频搜索热词进行深度

weixin_30824599的博客 362

探索DCEVM:一款强大的Java虚拟机扩展

探索DCEVM:一款强大的Java虚拟机扩展 去发现同类优质开源项目:https://gitcode.com/ 是一个创新性的项目,它提供了一种动态代码修改的能力,允许你在运行时热插拔和更新Java类文件,极大地提升了开发者的工作效率。对于那些需要频繁调试、实验性功能测试或者希望优化性能的应用程序开发者来说,这是一个非常有价值的技术。 技术分析 DCEVM 基于 OpenJDK 的 HotSpot...

gitblog_00078的博客 1225

【信息科学与工程学】计算机科学与自动化 第二百三十三篇 凤凰架构01

编号类型领域系统软件/硬件或系统集成方案及系统架构模块子模块函数名称/算法名称算法的数学分析及计算机体系架构及数据结构与算法详细设计及参数列表及数值范围设计关联知识1共识算法分布式基石状态机复制架构:Proposer/Acceptor/Learner 多节点角色模型,基于操作转移(Operation Transfer)分布式共识PaxosPaxos 协议(Prepare/Promise/Accept/Accepted 两阶段)数学基础:多数派(Quorum)投票,基于鸽巢原理保证 W+R>N 时读写集合必有

weixin_49199313的博客 261

DCEVM:DCEVM Intellij IDEA 集成

想要能够在添加/删除方法之后热插拔类吗? 这是一个适合你的插件! 这是一个 IntelliJ IDEA 插件,它提供了与集成——一个基于 OpenJDK 的 JVM,它修复了标准的 。

工作中使用到的单词(软件开发)_第四版

本文汇总了2020-2025年间软件开发相关的工作笔记,主要包括三版技术词汇整理(2020-2025)、优快云文章导出PDF情况,以及2025年6月的专题整理。重点内容涉及:WebSphere中jackson包加载路径问题、Java异步线程类型(守护/非守护线程)的区分与解决方案、DB2数据库连接相关指令(db2listapplications等)、AWS托管服务优势,以及OSGi框架与Java的关系说明。特别标注了技术术语的英文发音(如initiative)和敏感信息处理注意事项(敏感度标签设置)。后续

sun0322 1343

dcevm_demo:dcevm 的演示使用

dcevm_demo 用不起jrebel,自然也会有免费的替代品 dcevm + hotswap。 运行demo: 记得事先安装dcevm,并下载hotswap,并替换命令中的{path} export MAVEN_OPTS="-XX:MaxPermSize=128m -Xmx1024m -Xdebug -XXaltjvm=dcevm -javaagent:{path}/hotswap-agent.jar" mvn jetty:run -pl jcevm_test-web 访问一下 是否得到了 102? 更改一下 CalcService里的calc,换成 return a * b + 500; 然后执行一下 mvn compile 重新访问 是否得到了 502? 无需重启web服务,支持maven多module。

工作中使用到的单词(软件开发)_第三版

====

sun0322 1万+

VSCode配置C/C++开发环境:从零安装MinGW-w64并运行第一个C程序

在Windows系统上搭建C语言开发环境时,很多初学者混淆编辑器、编译器与调试器的分工,导致配置过程屡屡受挫。理解VSCode作为轻量级编辑器的定位,以及MinGW-w64提供的gcc编译器在源码编译中的核心作用,是顺利完成环境配置的关键。环境变量的正确设置直接影响gcc命令能否全局调用,而C/C++插件则赋予编辑器语法高亮与智能提示能力。通过安装VSCode、配置MinGW-w64、安装插件、汉化界面并运行一个最简单的hello.c程序,就能系统掌握这套开源工具链的完整工作流。无论是用于课程学习、算法练习

weixin_42531923的博客 528

论文阅读4——一种宽频带圆极化微带天线的设计

论文阅读——一种宽频带圆极化微带天线的设计(现在才觉得开始弄懂了一点,懂了一点之后又更糊涂了……)

weixin_64612422的博客 2314

java动态替换系统类,DCEVM,Java类动态替换初级实验说明

概述DCEVM,全称Dynamic Code Evolution,一个JVM补丁程序,其目的就是实现运行时的类替换。最新的项目地址为:https://dcevm.github.io/下面将从安装、验证、搭建测试环境、测试等几个方面进行简要说明。安装首先登录网址:https://dcevm.github.io/,站点中明确给出了Binaries(二进制程序)的下载链接,该项目分为两个版本的发布程序,...

weixin_42562079的博客 831

Streamlit安装避坑指南:从零到一键启动你的第一个数据可视化应用

本文提供了一份详尽的Streamlit安装避坑指南,帮助用户从零开始快速启动第一个数据可视化应用。文章深入剖析了安装过程中常见的网络超时、依赖冲突、环境变量缺失等核心问题,并给出了使用虚拟环境、配置国内镜像源、利用.whl文件离线安装等多种经过验证的解决方案,确保安装过程顺畅无阻。

weixin_29065015的博客 614

Java项目热部署方案之IDEA-HotSwapAgent和DCEVM大法

依赖 DCEVM。而 DCEVM要求jdk版本必须对应,如果你用的 jdk1.8,首先需要确认安装的是jdk8u181。

一掬净土 3970

Nginx&&Keepalived(一)Keepalived介绍

一、背景: 案例1:如现有服务my-service-demo,希望实现高可用和负载均衡: 首先,my-service-demo服务部署在两台机器上,通过nginx去代理这两个节点,负载均衡就实现了。如果只有一个nginx,这台nginx机器一旦宕机,访问nginx会报错。这时候在另外一台机器nginx2上也安装nginx,并配置同样的代理,可以解决上述问题,但是暴露给用户的只有一个域名(或ip),不可能给用户提供两个域名,域名1(nginx机器1)访问不了了再让用户访问域名2(nginx机器2),这

w_t_y_y的博客 2880

PLC凸轮开关指令编程应用——控制算法

凸轮开关指令的作用是在PLC程序中根据凸轮开关(Cam Switch)的状态执行不同的操作。凸轮开关通常是机械式的开关装置,它的位置会随着机械运动的变化而改变。凸轮开关的状态可以用来检测机器的位置、角度或其他相关信息,从而触发相应的控制动作。总结起来,凸轮开关指令是PLC编程中常用的一种控制算法,通过检测凸轮开关的状态来触发相应的操作。本文将介绍凸轮开关指令的应用和相应的控制算法,并提供相关的源代码示例。在这个示例中,凸轮开关状态的值代表不同的位置,根据凸轮开关状态的不同,执行相应的动作。

LiJavascript的博客 1034

Dynamic Code Evolution for Java dcevm 原理

在hostswap dcevm中我们对Dynamic Code Evolution VM有了一个简单的了解,这篇文章将介绍Dynamic Code Evolution VM的实现原理。 有两个概念需要区别下: Dynamic Code Evolution (下文简称DCE):泛指java在运行时修改程序的技术.例如aop等. Dynamic Code Evolution VM(下文简称DCE ...

weixin_34249678的博客 293

【WorkBuddy专栏27】WorkBuddy 和 CodeBuddy 到底什么关系——一篇文章终结所有混淆

WorkBuddy 和 CodeBuddy 到底什么关系——一篇文章终结所有混淆

AI人人懂 2564

如何用HotSwapAgent和DCEVM让java开发像js开发一样高效(JRebel的替代方案)

要高效的开发Java代码,那就必须要让java像js一样,修改过的代码可以实时的反应出来。要了解如何做到这一点,我们先要知道JVM是如何工作的: 我们知道,JAVA程序都是运行在java虚拟机上面(当然JVM有两种类型,JDK和单纯的JRE,这里我们主要是指的JDK,因为只有JDK包含了debug功能,而我们只有在debug端口打开的情况下才能实现run time class load)

点火三周的专栏 1万+

【ARFoundation自学04】AR Tracked Image 图像追踪识别与对应类的调用

1.添加组件 2.创建图像识别库 3.创建识别后追踪的物体(UI、模型等)

leoysq的博客 2560

【OpenAI】Python:(1) 基于 Gym-CarRacing 的自动驾驶项目 | 前置知识介绍 | 项目环境准备 | 手把手带你一步步实现

本篇是关于多伦多大学自动驾驶专业项目 Gym-CarRacing 的博客。GYM-Box2D CarRacing 是一种在 OpenAI Gym 平台上开发和比较强化学习算法的模拟环境。它是流行的 Box2D 物理引擎的一个版本,经过修改以支持模拟汽车在赛道上行驶的物理过程。由于内容比较多所以分多次更新,本篇是关于前置知识介绍,以及项目环境准备的。

有道无术, 术尚可求。有术无道, 止于术。 5053

DCEVM

介绍 DCEVM是The Dynamic Code Evolution Virtual Machine的缩写。 我们在使用debug进行调试的时候,如果修改了方法体逻辑的话,JVM是可以自动重新加载到内存的。那如果修改实例变量和方法呢,怎么才能做到不重启服务器?下面介绍的就是通过动态...

chuannaoxuan4674的博客 207

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

玩转 DCEVM + HotSwapAgent 热加载,免费、开源!

DCEVM 提供 JRebel 类似的功能,允许允许在运行时无限制地重新定义加载的类,所谓”热插拔、热加载、热部署“功能大抵如是。而 HotwapAgent 则适配了 Servlet 程序的热加载。 最重要的是 DCEVM + JRebel 免费、开源,不用为 JRebel 找破解而折腾,而且也心安理得地用。 安装 安装 DCEVM 需要 DCEVM 和 JVM 版本一致才行。运行 java -...

zhangxin09的专栏 8022

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Hotswap Agent+Dcevm 热部署方案

Dcevm根据官网的的描述,hotswap能实现这些效果看不懂没关系,用软件翻译可以看到如下信息。

aaroncgt的博客 3907

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

java decvm生产环境_java生产环境下性能监控与调优(一)-Go语言中文社区

1. -Xmx -Xms-Xms等价于-XX:InitialHeapSize-Xmx等价于-XX:MaxHeapSize查看运行时参数的值:ps -ef | grep tomcat (获得进程号)jinfo -flag MaxHeapSize 进程id显示结果:-XX:MaxHeapSize=2684354562. PrintFlagsFinal3. jps4.jinfo怎样查看一个正在运行的jv...

weixin_29589469的博客 325

java decvm生产环境,生产环境系统负载过高如何定位?

通常情况下,我们最熟悉的查看平均负载的命令可能就是uptime这个命令了最后3个值分别是过去1、5、15分钟内的平均负载,那么在生产环境中,当系统负载达到多少的时候需要我们特别注意呢?个人认为当平均负载持续超过cpu数量的80%以上就代表着当前机器已经算全力在工作了,一旦系统负载过高,就会导致程序变慢,严重的甚至会产生生产事故。比如说当前8核的系统,系统负载一直维持在7以上或者更高,这个时候你就该...

weixin_36121354的博客 324
上一篇: 如何解决gitignore添加失败
下一篇: 【Galois工具开发之路】关于IDEA的gradle工程执行两次premain的bug~
newcih
博客等级 码龄11年 484粉丝 78原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

newcih

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值