zoukankan      html  css  js  c++  java
  • 关于开发、部署、运行过程中jdk不同版本的使用心得

    一、问题
        在运行环境下出现  javax.annotation ,javax.xml.bind 等找不到的情况,程序抛出异常。
     
    二、分析及处理
        jdk版本,开发环境:1.8,maven 打包环境:1.8,运行环境:11
        升级jdk11后, javax.annotation ,javax.xml.bind 在jdk中被移除,在 jdk1.8下不会出现问题,部署到运行环境则抛出异常,由于开发和运行的环境不统一,以至于不能及时发现并找出问题原因,耗费很多时间和精力,下面是处理方法。
    (1) javax.annotation  问题解决:
         javax.annotation 下的一些类 如:PostConstruct、Resources 是一些规范的接口,jdk11中移除之后,两种情况下对应解决方案:
        第一种情况,java程序运行于 web容器 下:经过分析对比,tomcat和jetty 之类的web容器的lib下面都有annotations-api 的依赖,在运行时不需要添加annotation的jar包。在开发时,如果开发环境为jdk11,可直接在pom 中添加 jakarta.annotation-api 依赖,scope 设置为provided,保证 api在编译测试时生效。 如果开发环境为java8则不影响。
        <dependency>
            <groupId>jakarta.annotation</groupId>
            <artifactId>jakarta.annotation-api</artifactId>
            <scope>provided</scope>
        </dependency>
     
        第二种情况,java程序的运行不依赖于web容器时,单独引入annotation-api 依赖即可。
     
    (2)javax.xml.bind 问题解决: 手动添加 jaxb-impl的一些依赖。
     
    三、总结
        目前组内Java程序的环境统一在:
        IDE编译级别——Java8
        Maven编译打包——Java8
        程序运行环境——Java11或Java8
    生产环境问题梳理排查时,将开发环境与生产环境统一,能提高排查问题的效率。
                    
  • 相关阅读:
    吃一堑长一智
    人做事 天看着
    【转贴】英语中12个月名称的由来
    4199,流氓中的流氓
    【转贴】看D片容易误解的10个词组
    【转载】中国小吃(英文表达)
    拼死拼活为了啥!
    GCII 1.4对1.31改进
    上古III的汉化和美化修正
    linux下tar的用法
  • 原文地址:https://www.cnblogs.com/mrsoft/p/12714168.html
Copyright © 2011-2022 走看看