`
翻滚吧--少年
  • 浏览: 25005 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

如何解决java工程中多个版本的包冲突问题

    博客分类:
  • Java
阅读更多
背景
最近工作上需要实现从mysql到hbase的实时数据同步的功能。经过多方了解,整理出解决方案:使用canal作为实时的数据源,然后开发一个client来完成与canal的对接,并将数据写入hbase数据库中。

问题
在开发接近尾声时,发现连接canal时需要使用protobuf-java-2.4.1.jar包,而连接hbase时则需要使用protobuf-java-2.5.0.jar。并且两者jar包无法兼容,使用任何一个jar都无法正常启动程序。

解决思路
为了程序能够正常运行,需要同时加载两个jar包。但是我们都知道,一个class在jvm内存中只有一份。
1.首先想到的是将canal中的protobuf版本升级至2.5.0,即修改canal源码使之使用2.5.0的jar包;
2.其次想到的合并2.4.1和2.5.0得到一个新的包,即比较2.4.1和2.5.0的不同之处,然后合并;
3.修改2.4.1中class的名字(通过修改package名)并重新打jar包,然后修改canal中引用到protobuf的地方并重新打jar包

事实证明第三种方法可行性最高,简单、方面又实用。
0
4
分享到:
评论
1 楼 zhuchao_ko 2014-12-04  
1、累
2、坑

相关推荐

    ​实现maven项目中多版本依赖兼容使用解决方案

    既能不升级jar包又能使用高版本依赖同时还不造成冲突的完美解决方案

    SOFAArk Project Java轻量级类隔离框架 v2.1.3

    实际开发中,可以采用多种方法来解决包冲突问题,比较常见的是类似 SpringBoot 的做法,统一管理应用所有依赖包的版本,保证这些三方包不存在依赖冲突。这种做法只能有效避免包冲突的问题,不能根本上解决包冲突的...

    SOFAArk 是一款基于 Java 实现的动态热部署和轻量级类隔离框架.rar

    实际开发中,可以采用多种方法来解决包冲突问题,比较常见的是类似 SpringBoot 的做法,统一管理应用所有依赖包的版本,保证这些三方包不存在依赖冲突;这种做法只能有效避免包冲突的问题,不能根本上解决包冲突的...

    autocode中文java版

    如果您是经常使用Hibernate或其他插件的java开发人员,一定会为Hibernate或其他插件的配置部署问题而搞懵,这些类型的插件有个最大的问题是其核心操作均是由该插件的内部完成,对开发人员来说是个黑匣子(一般用户...

    sofa-ark:SOFAArk是一个轻量级的,基于Java的类加载器隔离框架

    实际开发中,可以采用多种方法来解决包冲突问题,比较常见的是类似 SpringBoot 的做法,统一管理应用所有依赖包的版本,保证这些三方包不存在依赖冲突;这种做法只能有效避免包冲突的问题,不能根本上解决包冲突的...

    工具箱(java开发中常用工具类,web工程中常用的Filter等).zip

    通过集成Git、SVN等版本控制系统,支持团队成员间的代码共享、分支管理、合并请求和冲突解决。 可视化设计与原型制作: 对于UI/UX设计,有界面设计工具,如Sketch、Adobe XD,可以帮助设计师快速构建应用程序...

    Java与Kotlin开发实用工具包.zip

    通过集成Git、SVN等版本控制系统,支持团队成员间的代码共享、分支管理、合并请求和冲突解决。 可视化设计与原型制作: 对于UI/UX设计,有界面设计工具,如Sketch、Adobe XD,可以帮助设计师快速构建应用程序...

    AutoCode代码生成器(JAVA版)

    如果您是经常使用Hibernate或其他插件的java开发人员,一定会为Hibernate或其他插件的配置部署问题而搞懵,这些类型的插件有个最大的问题是其核心操作均是由该插件的内部完成,对开发人员来说是个黑匣子(一般用户...

    java面试题

    37. 一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制? 18 38. 比较truncate和delete 命令 18 39. 解释$ORACLE_HOME 和$ORACLE_BASE的区别? 19 40. session与cookie的区别和联系? 19 41. ...

    微信开发工具包weixin sdk for Java.zip

    通过集成Git、SVN等版本控制系统,支持团队成员间的代码共享、分支管理、合并请求和冲突解决。 可视化设计与原型制作: 对于UI/UX设计,有界面设计工具,如Sketch、Adobe XD,可以帮助设计师快速构建应用程序...

    唯品会Java开发手册.zip

    结合唯品会的内部经验,参考《阿里巴巴Java开发手册》《Clean Code》、《Effective Java》等重磅资料进行了大幅定制,包含核心基础类库VJKit ,问题排查工具VJMap 和 VJTop 三部分。 开发工具在软件开发生命周期中...

    java 开发工具集,包含网络,并发逻辑处理,csp队列,热更新加载器.zip

    通过集成Git、SVN等版本控制系统,支持团队成员间的代码共享、分支管理、合并请求和冲突解决。 可视化设计与原型制作: 对于UI/UX设计,有界面设计工具,如Sketch、Adobe XD,可以帮助设计师快速构建应用程序...

    xmljava系统源码-mountain:山

    一个tomcat中部署多个类似项目,将报错 Unable to register MBean [HikariDataSource (null)] with key 'test1DataSource',这是 因为JMX:Java Management Extension(Java管理应用扩展),默认是true,导致冲突 解决...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part2

    本书语言生动、通俗易懂、讲解细致,大部分章节都提供了多个例子,而且很多例子都是目前web开发中经常使用的功能,具有相当的实用价值。本书不仅可以作为java web开发的学习用书,还可以作为从事java web开发的...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part3

    本书语言生动、通俗易懂、讲解细致,大部分章节都提供了多个例子,而且很多例子都是目前web开发中经常使用的功能,具有相当的实用价值。本书不仅可以作为java web开发的学习用书,还可以作为从事java web开发的...

    solr的相关工程

    自己写的demo,没有配置好,但是大概步骤没有问题,solr的版本太多了,和java版本有些冲突,所以没有调试成功,包括java操作solr的jar包,词库,分词等配置都已近配好,数据库字段四个:id userName userAge user...

    计算机程序设计语言课程设计(java)及实践项目的例子.txt

    综合能力培养:计算机课程设计涉及到多个方面的知识和技能,如编程、算法、数据结构、软件工程等。通过设计和实现项目,学生能够综合运用这些知识和技能,培养他们在解决复杂问题和面对现实挑战时的能力。

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part4

    本书语言生动、通俗易懂、讲解细致,大部分章节都提供了多个例子,而且很多例子都是目前web开发中经常使用的功能,具有相当的实用价值。本书不仅可以作为java web开发的学习用书,还可以作为从事java web开发的...

    goniub是一个java爬虫工具库.zip

    通过集成Git、SVN等版本控制系统,支持团队成员间的代码共享、分支管理、合并请求和冲突解决。 可视化设计与原型制作: 对于UI/UX设计,有界面设计工具,如Sketch、Adobe XD,可以帮助设计师快速构建应用程序...

    Unirest轻量级的HTTP开发库.rar

    在java工程里如果需要透传什么信息给一个http接口的话,我们往往会使用HttpClient这个类,然后set很多param参数,这个类自然是很优秀的也被很多线上工程使用着,但是使用的过程中总不是那么的简便,比如需要引很多包...

Global site tag (gtag.js) - Google Analytics