我目前正在Eclipse中开发一个插件。我遇到了以下代码的问题:
XYZ object1 = XYZ(object2);
所述行抛出异常:
引起:java.lang.ClassCastException:abc.XYZ无法强制转换为abc.XYZ
XYZ类来自另一个插件。不幸的是,所述插件没有可见的包。因此,将其设置为依赖项会引发ClassDefNotFound
异常。
幸运的是,我有插件的.jar
并将其添加到我的插件的构建路径中。当我这样做时,它仍然返回ClassDefNotFound
异常。我环顾四周,发现对于插件,JVM没有自动“检测”引用的库,因此,我按照解决方案将所述jar添加到MANIFEST.MF
和bin.includes
我的插件的部分build.properties
。
按照上述解决方案后,我再次尝试,现在我有classCastException。至少,此时,jar文件中的类XYZ
现在正在加载。做了一些研究,我发现两个XYZ
类的类加载器是不同的。我完全不知道应该采取什么措施。
以下是整个问题的摘要:
如果有人能解决这个问题,或者我可以采取哪些措施来解决这个问题,那就太棒了。
提前感谢您提供的任何帮助/输入。
答案 0 :(得分:1)
你不能这样做。 Eclipse插件系统旨在防止您访问未导出的类。
在插件中包含插件jar将始终使用类加载器中的不同类加载器,您将获得类强制转换异常。
访问这些类的唯一方法是修改另一个插件以导出这些类。