OSGi-在不修改原始捆绑包的情况下修改捆绑包中的类

OSGi-在不修改原始捆绑包的情况下修改捆绑包中的类,osgi,equinox,osgi-bundle,Osgi,Equinox,Osgi Bundle,我需要修改OSGi包中的一个类。但是这个捆绑包来自上游项目,因此我不能(不会)碰它。但我必须修改其中的一个类以符合我的项目要求。所以,我正在寻找解决方案 因此,我创建了自己的包,其中包含补丁类。但是由于上游OSGi捆绑包和我创建的补丁OSGi捆绑包具有相同的包,因此存在一个复杂问题。我想超越上游OSGi捆绑包中的类,而不触及它 我看了看那页。它提出了一种使用片段包修补主机包的方法,但为此,我必须修改上游项目包的MANIFEST.MF以设置bundle类路径:patch.jar,。 有什么建议吗?

我需要修改OSGi包中的一个类。但是这个捆绑包来自上游项目,因此我不能(不会)碰它。但我必须修改其中的一个类以符合我的项目要求。所以,我正在寻找解决方案

因此,我创建了自己的包,其中包含补丁类。但是由于上游OSGi捆绑包和我创建的补丁OSGi捆绑包具有相同的包,因此存在一个复杂问题。我想超越上游OSGi捆绑包中的类,而不触及它

我看了看那页。它提出了一种使用片段包修补主机包的方法,但为此,我必须修改上游项目包的
MANIFEST.MF
以设置
bundle类路径:patch.jar,。

有什么建议吗?

您可以实现一个包并捕获该包的类加载


然而,只有当你没有任何其他机会解决你的问题时才去做。如果您有机会对包含jar的项目做出贡献,请为他们发送一个补丁,并将其作为临时解决方案。有了这样的黑客,你的系统对其他人来说将是一片混乱。

是的。最初的问题可以归结为:我想改变一些东西,但实际上并没有改变它。这是不合理的。要么改变,要么不改变。使用编织钩子可以在运行时用来替换类,但这也有风险。在这种情况下,为项目回馈不会起作用,因为这是一种自定义更改。我要用编织钩试试。我知道编织钩子会使用类加载器,但风险是什么?@user3580…:想象一下,你是你的一位同事,他让你的代码继续开发。想象一下,你不能自言自语地谈论你所使用的伎俩。您将如何找到修复bug、调试和改进代码的地方。对你来说很清楚的解决方案对其他人来说可能是神奇的。许多项目都被放弃了,原因是其中有太多棘手的解决方案,没有人理解代码,只有编写代码的人。这就是为什么我建议在没有其他选择的情况下将其视为临时解决方案。如果是自定义更改,则考虑一种使原始库更加抽象或可扩展的方法。通过这种方式,您可以应用您的自定义更改而无需黑客,其他人也可以进行自己的自定义更改。