首页 > 代码库 > 插件开发,包冲突问题
插件开发,包冲突问题
最近在开发中遇到了一个包冲突问题,在开发的插件C依赖了org.json包。但是在使用时一直报类似如下错误:
java.lang.LinkageError: loader constraint violation: when resolving interface method "package.class.method(JLpackage/class;)Ljava/lang/Object;" the class loader (instance of org/eclipse/osgi/internal/baseadaptor/DefaultClassLoader) of the current class, package/class, and the class loader (instance of org/eclipse/osgi/internal/baseadaptor/DefaultClassLoader) for resolved class, package/class, have different Class objects for the type package/class used in the signature
loader constraint violation: loader (instance of org/eclipse/osgi/internal/baseadaptor/DefaultClassLoader) previously initiated loading for a different type with name
在网上查了下,参考了http://blog.csdn.net/zhuzhenlong998/article/details/7744953这篇文章,文章中说
A依赖B,B引用第三方包,
那么如果C在依赖A,并且引用该第三方包时,就会出现C的classloader加载了第三方包,B的classloader也加载了该第三方包,就会出现包冲突。
但是A/B都是由别的部门提供的现有的插件,我不知道哪个插件引用了org.json,也不可能去改他们的插件,就试着把自己插件的org.json依赖去掉。
OK,插件代码报错,因为缺了org.json引用。
然后,在Imported Packages中加入org.json,插件代码报错消失。
运行程序,正常运行!
插件开发,包冲突问题
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。