Java 在eclipse插件中包含所有工作空间类

Java 在eclipse插件中包含所有工作空间类,java,eclipse,eclipse-plugin,eclipse-pde,Java,Eclipse,Eclipse Plugin,Eclipse Pde,我试图通过使用XStream将任意Java对象序列化为XML,将它们从工作区传输到插件。使用SIMON可以很好地工作,但当尝试在插件站点上恢复它们时,我显然遇到了CannotResolveClassException。所以我想在插件的构建路径中加入工作区类,为了使工作区类型在我的插件中可用,从而能够还原对象。我使用URLClassLoader并使用Resources插件遍历工作区中的所有项目,并将所有子文件夹递归地添加到此类加载器,成功地做到了这一点。 我知道这是一种蛮力,但它正在工作,我不知道

我试图通过使用XStream将任意Java对象序列化为XML,将它们从工作区传输到插件。使用SIMON可以很好地工作,但当尝试在插件站点上恢复它们时,我显然遇到了CannotResolveClassException。所以我想在插件的构建路径中加入工作区类,为了使工作区类型在我的插件中可用,从而能够还原对象。

我使用URLClassLoader并使用Resources插件遍历工作区中的所有项目,并将所有子文件夹递归地添加到此类加载器,成功地做到了这一点。
我知道这是一种蛮力,但它正在工作,我不知道如何确定构建目标文件夹并不总是/bin。

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