Closed YuanEr2 closed 1 year ago
当我把Jvm参数改为: -XXaltjvm=dcevm -javaagent:HotSecondsServer-beat4.HotSecondsServer.jar=hotconf=com.parent.modules.hot-seconds-remote.xml 报错异常更改为:
最近有好几个小伙伴反馈windows上缺失依赖库,我把所有的静态依赖都打包到了boot.dll了,发布了HotSecondsServer-beat5版本,你下载这个版本试一下应该就没问题了
你的操作没有什么问题,就按最开始的配置就行
下载HotSecondsServer-beat5版本后,我按照最开始的配置部署,存在下面新的问题 1.Jvm参数设置为时: -XXaltjvm=dcevm -javaagent:HotSecondsServer-beat5/HotSecondsServer.jar=hotconf=com/parent/modules/hot-seconds-remote.xml
2.Jvm参数设置为时: -XXaltjvm=dcevm -javaagent:HotSecondsServer-beat5.HotSecondsServer.jar=hotconf=com.parent.modules.hot-seconds-remote.xml
而且当我在Windows使用cmd测试时也显示没有主属性清单
hotconf填的是hot-seconds-remote.xml的路径,不是相对src的路径也不是包名,写绝对路径也可以的,其实hot-seconds-remote.xml随便放哪里都无所谓,只需要hotconf配置上路径就行
下载HotSecondsServer-beat5版本后,我按照最开始的配置部署,存在下面新的问题 1.Jvm参数设置为时: -XXaltjvm=dcevm -javaagent:HotSecondsServer-beat5/HotSecondsServer.jar=hotconf=com/parent/modules/hot-seconds-remote.xml
2.Jvm参数设置为时: -XXaltjvm=dcevm -javaagent:HotSecondsServer-beat5.HotSecondsServer.jar=hotconf=com.parent.modules.hot-seconds-remote.xml
现在项目可以启动了,但是热部署时出现编译失败
本地热部署就不要用Remote compillation and hotswap了 ,你直接用Hotswap this file 这个功能就行
另外本地的main函数启动的SpringBoot项目是AppClassLoader,不是LaunchedURLClassLoader,一切以Github文档上的为主
springBoot项目没有问题,现在出问题的是springBootCloud项目,使用了gateway,nacos,mybtis-plus等技术栈
这个报错就是hot-seconds-remote.xml填的classloader未找到,所以报空指针异常,你可以在你要热加载的类上面断点调试一下,用getClass().getClassLoader()看看classloader是哪个,然后填到hot-seconds-remote.xml里,因为热加载某个类是由classloader+classname才能确定唯一的一个class,所有的class热更新都需要这个classloader.
之所以需要手动填classloader而不是插件自动扫描的原因是,把依赖框架和容器的依赖classloader剥夺出来,无论什么容器都能热部署
1.去dcevm 找到你的JDK版本的jar包(支持macOS, Linux and Windows),下载下来后运行jar(可能需要管理员权限或者root权限)安装,选择Install DCEVM as altjvm
2.将本安装包HotSecondsServer.zip解压后,放到你的工程根目录
3.将hot-seconds-remote.xml复制到代码的resource目录,根据需要修改secret和classloader等配置 第一步:
第二步:
第三步:
第四步:
4.添加jvm参数开启热部署代理 -XXaltjvm=dcevm -javaagent:$path1/HotSecondsServer.jar=hotconf=$path2/hot-seconds-remote.xml 其中$path1是第2步上传的目录,$path2是第3步上传的目录 第一步:
第二步:
异常信息: