【问题标题】:Include all workspace classes in eclipse plugin在 Eclipse 插件中包含所有工作区类
【发布时间】:2012-06-25 15:01:58
【问题描述】:

我正在尝试通过使用 XStream 将任意 Java 对象序列化为 XML,将任意 Java 对象从工作区传输到我的插件。这工作正常(使用 SIMON),但是当试图在插件站点上恢复它们​​时,我得到一个 CannotResolveClassException (显然)。所以我想以某种方式在我的插件的构建路径中包含工作区类,以便使工作区类型在我的插件中可用,从而能够恢复对象。

【问题讨论】:

  • 您的插件需要访问 java 类。它们已经在插件中,还是在 java 项目中?
  • 它们在一个普通的Java项目中,而不是插件。
  • Eclipse 插件是 OSGi 包,因此您必须以某种方式将您的 java 类公开给 OSGi(包含在您的插件中或作为它们自己的插件)。请参阅 stackoverflow.com/q/3594024/713646stackoverflow.com/q/762721/713646,因为它们解释了 jar 和 OSGi 之间的关系。
  • 感谢您的建议...嗯,但我正在编写一个插件来在运行时可视化对象并让它们在事后可互操作(即我需要存储它们)。但是,如果我的插件(在 Eclipse VM 中运行)不知道这些(任意)用户类型,则会导致问题。无论如何,我不能指望用户构建 OSGi 包只是为了能够使用这个插件......
  • 如果就像在您的插件中托管另一个 java 应用程序一样,您可以(理论上)使用 URLClassloader 创建和加载他们的代码。您将完全通过反射来操纵他们的对象。

标签: java eclipse eclipse-plugin eclipse-pde


【解决方案1】:

我已经设法通过使用URLClassLoader 并遍历工作区中的所有项目(使用资源插件)并将所有子文件夹(递归)添加到这个类加载器来做到这一点。 我知道这是某种蛮力,但它正在工作,我不知道如何确定构建目标文件夹(并非总是 /bin)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-04
    • 1970-01-01
    • 2011-03-17
    • 1970-01-01
    • 2014-10-13
    • 1970-01-01
    相关资源
    最近更新 更多