当前位置: 首页 > news >正文

库尔勒网站建设电话织梦网站安装教程

库尔勒网站建设电话,织梦网站安装教程,免费引流推广怎么做,楚雄做网站JDK 8 升级 JDK 17 首先已有项目升级是会经历一个较长的调试和自测过程来保证允许和兼容没有问题。先说几个重要的点 遇到问题别放弃仔细阅读报错#xff0c;精确到每个单词每一行#xff0c;不是自己项目的代码也要点进去看看源码到底是为啥报错明确你项目引入的包#x…JDK 8 升级 JDK 17 首先已有项目升级是会经历一个较长的调试和自测过程来保证允许和兼容没有问题。先说几个重要的点 遇到问题别放弃仔细阅读报错精确到每个单词每一行不是自己项目的代码也要点进去看看源码到底是为啥报错明确你项目引入的包升级到 JDK17 后对应低版本的都需要升级 可能大部分同学都不是完全了解自己的项目都依赖了什么包这个升级工作一定会加深你对 maven 包管理的理解以及你对你项目依赖的熟悉程度和你解决排查问题的能力。 项目跑不起来就慢慢调试问题暂时解决不了就放一放放松一下交给下个阶段头脑清醒的自己。 升级你的 maven 编译版本 修改你主工程的 pom 文件 plugingroupIdorg.apache.maven.plugins/groupIdartifactIdmaven-compiler-plugin/artifactIdversion3.7.0/versionconfigurationsource17/sourcetarget17/target/configuration /plugin我用的是 idea 修改你项目的编译环境 从新拉 maven 之后你就可以看看哪里报红哪里需要改了别担心噩梦才刚刚开始哈哈哈 去除重复依赖 长时间的维护可能存在一个包在一个 pom 里引入两次的情况 真服了 首先项目中 pom 文件不可以出现重复依赖需要排查去掉 dependencygroupIdorg.springframework/groupIdartifactIdspring-context/artifactId /dependency dependencygroupIdorg.springframework/groupIdartifactIdspring-context/artifactId /dependency对于依赖版本不可以直接出现 RELEASE你可以定义一个 properties 然后引用一下 dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-test/artifactIdversionRELEASE/versionscopetest/scope /dependency一些依赖的版本升级 这部分只列举我再升级过程中遇到的需要升级的问题 升级 lombok 到 1.18.26 lombok 得用新版本 我之前是 1.18.4 现在换到 26 dependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactIdversion1.18.26/version /dependency升级 springboot 到 2.7.14 你可以在官方文档看到 2.7.14 对应的一些依赖版本 https://docs.spring.io/spring-boot/docs/2.7.14/reference/html/dependency-versions.html#appendix.dependency-versions spring.boot.version2.7.14/spring.boot.version spring.version5.3.29/spring.version dubbo.version2.7.23/dubbo.version说一下我这里为什么没有选择拥抱 3.x 因为 dubbo 3 才支持 springboot 3.x 和 spring6.x而我调用的三方接口都是 dubbo2dubbo3 应用基本注册不向下兼容 dubbo2会有诸多问题所以这里选择 2.7.14 GA 这个官网稳定支持的版本如果你没有这个问题可以选择拥抱 3.0 提醒一下如果要升级 springboot3 springboot3 弃用了 javax.servlet.http.HttpServletRequest; 需要替换为 jakarta.servlet.http.HttpServletRequest; HandlerInterceptorAdapter 被删除了由 HandlerInterceptor 来代替 yml 配置允许循环依赖 spring:main:allow-circular-references: true三方包依赖找不到类 我引入的三方包Spring bean 加载存在问题感觉是 JDK 升级的问题跟 spring 的升级没关系 是找不到这个玩意的定义 org.apache.commons.configuration.interpol.ConfigurationInterpolator nested exception is java.lang.NoClassDefFoundError: Could not initialize class org.apache.commons.configuration.interpol.ConfigurationInterpolator很怪明明有就找不到这里将三方包的引入排除掉自己项目中单独进行引入 exclusionartifactIdcommons-configuration/artifactIdgroupIdcommons-configuration/groupId /exclusiondependencygroupIdcommons-configuration/groupIdartifactIdcommons-configuration/artifactIdversion1.10/version /dependency顺便提一个 springbean 加载的问题如果你引入的三方包有路径下的 bean 需要你进行注册管理你项目启动类的扫描路径下需要包含他的路径比如 SpringBootApplication(scanBasePackages {com.你的包,com.三方的需要扫描的包路径})当然如果路径一致就一个就可以 zookeeper 升级 3.5.10 升级 zookeeper 版本为 3.5.10 3.5.x 以下不兼容 JDK17 https://curator.apache.org/zk-compatibility-34.html 还有个 curator 强依赖的场景需要注意升级 如果你服务器的 zookeeper 可以升级最好不过如果不能 curator 2.x 可以兼容 zookeeper 3.5.x 的版本 如果你之前使用的是 curator 2.x 就只升级 zookeeper 的版本就行了这样连接你线上的 zookeeper 不会有问题。 否则请将服务器版本同步升级 可参考文章 官方文章 https://curator.apache.org/zk-compatibility-34.html csdn 文章 https://blog.csdn.net/wo541075754/article/details/69138878 apache-curator.version2.12.0/apache-curator.version dependencygroupIdorg.apache.curator/groupIdartifactIdcurator-framework/artifactIdversion${apache-curator.version}/versionexclusionsexclusiongroupIdlog4j/groupIdartifactIdlog4j/artifactId/exclusionexclusiongroupIdorg.apache.zookeeper/groupIdartifactIdzookeeper/artifactId/exclusion/exclusions /dependency dependencygroupIdorg.apache.curator/groupIdartifactIdcurator-recipes/artifactIdversion${apache-curator.version}/versionexclusionsexclusiongroupIdlog4j/groupIdartifactIdlog4j/artifactId/exclusionexclusiongroupIdorg.apache.zookeeper/groupIdartifactIdzookeeper/artifactId/exclusion/exclusions /dependencymysql 版本升级 8.0.33 没啥好说的不升你连不上 dependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactIdversion8.0.33/version /dependency启动项 注意你项目启动时需要增加启动参数不管是实际运行还是本地调试运行 --add-opens java.base/java.langALL-UNNAMED --add-opens java.base/java.ioALL-UNNAMED --add-opens java.base/java.mathALL-UNNAMED --add-opens java.base/java.netALL-UNNAMED --add-opens java.base/java.nioALL-UNNAMED --add-opens java.base/java.securityALL-UNNAMED --add-opens java.base/java.textALL-UNNAMED --add-opens java.base/java.timeALL-UNNAMED --add-opens java.base/java.utilALL-UNNAMED --add-opens java.base/JDK.internal.accessALL-UNNAMED --add-opens java.base/JDK.internal.miscALL-UNNAMED当然你如果不加也能起可以不加。解释一下 --add-opens 参数是在 JDK 9 及更高版本中引入的用于在模块系统中打开特定的包以实现反射访问。模块系统引入了更严格的访问控制以确保代码的可靠性和安全性。在某些情况下一些库或框架可能依赖于 JDK 内部的类和方法这些类和方法在模块系统中是受限的因此需要通过 --add-opens 参数进行显式打开。 具体来说--add-opens 参数允许你在指定的模块中打开某个包以便其他模块可以通过反射访问该包中的类和方法。java.base 是 JDK 的基础模块其中包含了 Java 核心类库。使用 --add-opens java.base/java.langALL-UNNAMED 参数是为了在 JDK 9 及更高版本中允许在 java.base 模块中的 java.lang 包中打开所有未命名的类从而允许反射访问。 通常情况下如果你的应用代码遵循良好的编程实践是不需要使用 --add-opens 参数的。然而一些第三方库、框架或老旧的代码可能会依赖于 JDK 内部的特性这时可能会需要使用这个参数来解决访问限制问题。不过尽量避免在生产环境中过度依赖这种方式因为这可能会引入一些潜在的风险和不稳定性。 比如 import sun.misc.Unsafe;public class RestrictedAccessExample {public static void main(String[] args) {try {// 使用反射获取 Unsafe 类的实例Class? unsafeClass Class.forName(sun.misc.Unsafe);Unsafe unsafe (Unsafe) unsafeClass.getDeclaredField(theUnsafe).get(null);// 使用 Unsafe 实例调用内部方法long value 42;long address unsafe.allocateMemory(8);unsafe.putLong(address, value);System.out.println(Value at address: unsafe.getLong(address));} catch (ClassNotFoundException | NoSuchFieldException | IllegalAccessException e) {e.printStackTrace();}} }全部启动项示例 当然你之前的垃圾回收器可能还在用 CMS 那已经废弃了所以需要改用 G1 或者 ZGC 吧这里我推荐直接用 ZGC。 ZGC 在 17 中已经非常成熟 -Xms2G -Xmx2G -XX:MaxDirectMemorySize256M -XX:ThreadStackSize512 -XX:MaxMetaspaceSize256M -XX:MetaspaceSize256M -XX:-OmitStackTraceInFastThrow -XX:UnlockExperimentalVMOptions -XX:UseZGC -XX:ZAllocationSpikeTolerance5 -Xlog:gc:/logs/gc.log --add-opens java.base/java.langALL-UNNAMED --add-opens java.base/java.ioALL-UNNAMED --add-opens java.base/java.mathALL-UNNAMED --add-opens java.base/java.netALL-UNNAMED --add-opens java.base/java.nioALL-UNNAMED --add-opens java.base/java.securityALL-UNNAMED --add-opens java.base/java.textALL-UNNAMED --add-opens java.base/java.timeALL-UNNAMED --add-opens java.base/java.utilALL-UNNAMED --add-opens java.base/jdk.internal.accessALL-UNNAMED --add-opens java.base/jdk.internal.miscALL-UNNAMED -jar dyinggq.jar详细参数配置根据自己服务自行适配调整。 报错集 这里收录一下报错和解决方案 nested exception is java.lang.NoClassDefFoundError: Could not initialize class org.apache.commons.configuration.interpol.ConfigurationInterpolator这个找不到类找到对应的调用位置看看为啥没有。最后解决方案是排除了三方包的引入自行单独引入该包 exclusionartifactIdcommons-configuration/artifactIdgroupIdcommons-configuration/groupId /exclusiondependencygroupIdcommons-configuration/groupIdartifactIdcommons-configuration/artifactIdversion1.10/version /dependency这个报错是你 zookeeper 的客户端包版本不兼容你服务器的版本 Caused by: java.lang.IllegalStateException: KeeperErrorCode Unimplemented for org.apache.dubbo.remoting.zookeeper.curator.CuratorZookeeperClient.createEphemeral(CuratorZookeeperClient.java:114)at org.apache.dubbo.remoting.zookeeper.AbstractZookeeperClient.create(AbstractZookeeperClient.java:83)at org.apache.dubbo.registry.zookeeper.ZookeeperRegistry.doRegister(ZookeeperRegistry.java:125)... 77 common frames omitted这里是因为我当时升级 zookeeper 的时候 curator 也一起升到 3.x 了而线上服务 zookeeper 的版本是 3.4.x apache-curator.version2.12.0/apache-curator.version所以 curator 还用老版本 dubbo No such extension cid for loadbalance/org.apache.dubbo.rpc.cluster.LoadBalanceddubbo 找不到自定义的 Balance 这个有很多情况我说我的情况我的情况是项目服务还在使用 com.alibaba.dubbo 然后我想一起升级到 org.apache.dubbo 结果找不到了想来是路径的问题老的都是继承的 com.alibaba.dubbo .rpc.cluster.LoadBalanced 你升级了需要org.apache.dubbo.rpc.cluster.LoadBalanced 这个如果你依赖三方包的还真改不了好在之前版本的 dubbo 也能在 jdk17 下运行。 Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration: Initialization of bean failed; nested exception is java.lang.IllegalArgumentException: error at ::0 cant find referenced pointcut aspect这个是 aspectj 版本不匹配 排除其他包引入的 aspecj 引入对应 springboot 版本的 aspecj 我这里给的是 springboot 2.7.14 对应的 aspectjweaver.version1.9.7/aspectjweaver.version dependencygroupIdorg.aspectj/groupIdartifactIdaspectjweaver/artifactIdversion${aspectjweaver.version}/version /dependency
http://www.w-s-a.com/news/288514/

相关文章:

  • 响应式企业网站开发所用的平台西安知名网站推广
  • 高端响应式网站建设wordpress 全屏主题
  • 国内工程机械行业网站建设现状ui是什么意思
  • 成都网站开发哪家公司好出售家教网站模板
  • 订阅号做流量 那些电影如何链接网站温州市建设监理协会网站
  • 成都网站建设成功案例单招网商丘网站建设大全
  • 受欢迎的购物网站建设网推专员是做什么的
  • 商城网站前期准备湖南郴州建设局网站
  • 企业如何在自己的网站上做宣传外贸自建站可以自己做网站吗
  • 甘肃网站建设制作商网站空间哪家公司的好
  • 思途旅游网站建设系统用vscode做网站
  • 广州站改造最新消息半年工作总结ppt模板
  • logo模板下载网站推荐哪家网站开发培训好
  • 做外贸网站效果图页面关键词优化
  • 广平网站建设成都活动轨迹
  • 小型网站网站建设需要网络公司是什么行业
  • 滑动 手机网站 代码网页制作与设计讨论
  • 自己做网站处理图片用什么软件wordpress html5支持
  • 校园网站怎么建软文文案范文
  • 中国建设官方网站如何创建自己的软件
  • 来宾住房与城乡建设网站天津西青区怎么样
  • 西安网站建设培训班鄂州网页定制
  • 西部数码网站备份自己怎么做网站啊
  • h5网站开发用什么软件制作公司网站建设代理怎么做
  • 网站建设资料准备网上购物app有哪些
  • 沧州做网站优化哪家公司便宜国内百度云网站建设
  • 网站的最近浏览 怎么做龙岩市人才网最新招聘信息
  • 网站建设需要找工信部吗网站开发账务处理
  • 做那种的视频网站个体工商网站备案
  • 推广网官方推广网站中国建设招聘信息网站