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
    生产环境问题梳理排查时,将开发环境与生产环境统一,能提高排查问题的效率。
                    
  • 相关阅读:
    文件处理
    字符编码
    基本数据类型及内置方法
    python语法入门之流程控制
    python语法入门之基本数据类型
    python语法入门之用户交互、运算符
    编程语言与Python介绍
    计算机核心基础
    图片验证码推导逻辑,Image.new,ImageDraw, ImageFont.truetype的用法
    VUEday01
  • 原文地址:https://www.cnblogs.com/mrsoft/p/12714168.html
Copyright © 2011-2022 走看看