这不是一个Exception 而是一个Error。
API里面是这么写的:
Subclasses of LinkageError indicate that a class has some dependency on another class; however, the latter class has incompatibly changed after the compilation of the former class.
也就是说 一个类对另一个类有一些依赖关系;但是,在编译前一个类之后,后一个类发生了不兼容的更改。
不明觉厉,但是这个问题被我碰到了..................................................
debug看了程序出错的地方,但是看了半天也不发觉类会有不兼容的更改.....
最后还是找的问题了,我们用了OSGI框架,不同Bundle之间是不同的ClassLoader,同一个class类被不同的ClassLoader加载,是不会被认为是同一个类的。所以我猜测是因为这个原因,于是进行了验证。果然,当我将报错的类从引用的bundle中Export-Package,然后使用 Import-Package引入到需要引入的bundle之后问题解决了。
提供基础服务的bundle <Export-Package>要导出的包</Export-Package>
使用到基础服务的bundle <Import-Package>要引入的包</Import-Package>