用我自己的库替换Eclipse库类

时间:2016-07-14 15:41:36

标签: java eclipse eclipse-plugin

我正在开发一个Eclipse插件,我想在其中覆盖Eclipse库中类所包含的方法的功能。

我到目前为止尝试的是在我的插件源中创建相同的(相同的包和文件名)文件,并在那里进行我想要的更改。然后,我设置构建路径顺序,使我的源位于插件依赖项之上。基于我有限的理解,这应该意味着当Java查找该类时,它应该使用我的库而不是库中的那个。

但是,这不起作用。我想要覆盖的行为没有改变,我也没有看到我在代码中添加的打印语句。

我怎样才能"替换" Eclipse库中的一个类,我自己的一个?

2 个答案:

答案 0 :(得分:0)

我通过以下方式做过一次(不以此为荣:-)):

  1. 通过Import->插件开发 - >插件和片段导入您想要入侵的插件(导入为带有源文件夹的项目)。
  2. 将项目设置为自动构建,编辑文件并查找其生成的类文件。
  3. 打开插件的jar(包含其类文件的jar),注入您的类文件而不是原始文件。
  4. 如果jar文件已签名,请从MANIFEST.MF(以及其他文件)中删除所有签名信息。
  5. 我承认它很难看,但这是我发现的最佳方式。

答案 1 :(得分:0)

我最终使用JVM JavaAgent来实现这一点,通过覆盖类加载器并在我自己的类中加载来替换库中的那个。

这对我来说是一个很有用的教程:https://stackoverflow.com/a/11898653/634324