Eclipse插件开发 - ClassCastException无法将abc.xyz强制转换为abc.xyz

时间:2016-11-10 08:13:31

标签: java eclipse plugins eclipse-pde

我目前正在Eclipse中开发一个插件。我遇到了以下代码的问题:

XYZ object1 = XYZ(object2);

所述行抛出异常:

  

引起:java.lang.ClassCastException:abc.XYZ无法强制转换为abc.XYZ

XYZ类来自另一个插件。不幸的是,所述插件没有可见的包。因此,将其设置为依赖项会引发ClassDefNotFound异常。

幸运的是,我有插件的.jar并将其添加到我的插件的构建路径中。当我这样做时,它仍然返回ClassDefNotFound异常。我环顾四周,发现对于插件,JVM没有自动“检测”引用的库,因此,我按照解决方案将所述jar添加到MANIFEST.MFbin.includes我的插件的部分build.properties

按照上述解决方案后,我再次尝试,现在我有classCastException。至少,此时,jar文件中的类XYZ现在正在加载。做了一些研究,我发现两个XYZ类的类加载器是不同的。我完全不知道应该采取什么措施。

以下是整个问题的摘要:

  • 必需的类来自另一个插件。所述插件没有可见的类。
  • 将依赖插件的jar文件添加到构建路径。
  • 抛出ClassDefNotFoundException。
  • 更新了我的插件的manifest.mf和build.properties config。
  • 抛出ClassCastException。

如果有人能解决这个问题,或者我可以采取哪些措施来解决这个问题,那就太棒了。

提前感谢您提供的任何帮助/输入。

1 个答案:

答案 0 :(得分:1)

你不能这样做。 Eclipse插件系统旨在防止您访问未导出的类。

在插件中包含插件jar将始终使用类加载器中的不同类加载器,您将获得类强制转换异常。

访问这些类的唯一方法是修改另一个插件以导出这些类。