使用片段项目扩展Eclipse插件时的类加载不起作用

时间:2012-06-06 08:54:41

标签: eclipse eclipse-plugin eclipse-fragment

我正在尝试使用片段项目扩展第三方Eclipse插件。主要原因是第三方插件包含具有默认(包)修饰符的类,我需要扩展它们。

因此,我的扩展类必须位于完全相同的包中。我创建了一个包含相同包的片段项目,并将我的类放入其中。当我使用运行时工作区时,一切正常。

但是,如果我尝试部署我的片段(例如,将其部署到我的Eclipse发行版的dropins文件夹中),我将无法执行代码。扩展和类似的东西工作正常(例如,我使用扩展为新的运行配置。但是,如果我尝试实例化此运行配置,我收到一条错误消息,第三方根插件无法将类加载到显示我的配置选项卡组。

有这种问题的经验吗?

3 个答案:

答案 0 :(得分:1)

抱歉,但这不起作用。除非主机包是专门为它制作的,否则不能从片段中覆盖主机中的类。原因是资源 - 包括类 - 在任何片段之前从主机中检索。

请参阅org.eclipse.osgi.baseadaptor.loader.ClasspathManager了解实施情况。

答案 1 :(得分:0)

实际上,这是我正在使用的扩展码:

<extension point="org.eclipse.debug.ui.launchConfigurationTabGroups">
  <launchConfigurationTabGroup
    class="com.android.ide.eclipse.adt.internal.launch.jouleunit.AndroidJouleUnitTabGroup"
    id="com.android.ide.eclipse.adt.jouleunit.AndroidJouleUnitLaunchConfigTabGroup"
    type="com.android.ide.eclipse.adt.jouleunit.launchConfigurationType">
  </launchConfigurationTabGroup>

当然,还有进一步的扩展定义了启动配置类型等,但这是Eclipse无法找到的类。

答案 2 :(得分:0)

实际上我现在为自己找到了问题。问题是错误配置的构建属性文件,它从我的片段JAR中排除了Java字节代码。非常痒,因为类在JAR中但在一个错误的子目录中。