踩坑之 --JDK版本不一致》

背景

  1. 最近一直在做数据同步,整体是基于DATAX,进行二次开发。将由集团同步到各个省份。
  2. 由于前期所挖的坑过深(部门之间模型不统一/程序开发过程中也没有考虑周全),导致后期有很多数据同步需求不能满足,需要进行大量的手工同步任务,《预处理程序》也就这样应运而生。
  3. 现在主要采用前后台分离-- 应用程序单独开发,所以在联调的时候问题就暴露出来了。

问题

Exception in thread "main" java.lang.UnsupportedClassVersionError: com/****/sync/commons/log/SyncFileAppender : Unsupported major.minor version 52.0
在这里插入图片描述

分析及解决过程

虽然很糙,但是值得借鉴

  1. 首先考虑版本问题–> 我这里用到的是和主机一样的jdk版本, 考虑到联调,用低版本编译之后再运行 --> 没有通过。

  2. 远程调用 --> 和本地调用不同,开发和测试阶段全在一个主机执行,无论怎么都是用的本机的环境,java -jar ****.jar 是没有问题的,但是联调属于远程调用,故将命令所涉及到的路径全部用绝对路径。

  3. 就在万分绝望的时候,注意到一个错误,这里也用到了java - *****, 查看源码之后,果然在datax 启动的时候要用到这个路径。这个时候就需要找到datax 安装的路径,找到这个脚本将java的路径改成了绝对路径。 --> 成功了
    java -server -Xmx8g -Xms8g -Xmn6g -XX:+UseParallelGC -XX:+UseParallelOldGC -verbose:gc -XX:+PrintGCDetails -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/home/****/datax/log -Djava.library.path=/usr/lib/hadoop/lib/native -Dloglevel=info -Dfile.encoding=UTF-8 -Dlogback.statusListenerClass=ch.qos.logback.core.status.NopStatusListener -Djava.security.egd=file:///dev/urandom -Ddatax.home=/home/****/datax -Dlogback.configurationFile=/home/****/datax/conf/logback.xml -classpath /home/****/datax/lib/*:. -Dlog.file.name=6_1566282663355_json com.alibaba.datax.core.Engine -mode standalone -jobid -1 -job /data1/datax_log/json/datax_zqcszh305.tmp_app_bw_second_card_trmnl_info_mon_month_id=201906_1566282663355.json

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值