我遇到一种情况,需要在第三方库中修复一个类,而我正在寻找一种有效的方法来修复和使用我的应用程序。
这是您知道的选项
获取源代码,修复代码并使用它。
提供对第三方开源库的修复。
我记得在先前的项目中,我们只是修复了一个类,并将其保留在我的源代码中的同一个程序包中,因此不能确定这是解决此问题的方法还是出于其他原因而完成。如果这样做,我的修复程序会被执行吗?另外,如果出于其他原因,我可能会知道我们何时使用它。
最佳答案
基本上正确的方法是通过pull-request或任何其他方式提供对第三方开源库的修复。但是,这需要时间,您将不得不等到该库的新版本。
如果您不能等待,则可以在项目中创建具有相同全名的类,并在类的源代码中进行修复。由于Java Classloader的工作方式,它将使用您的固定类,而不是第3方jar中具有相同全名的类。
但是,这种错误修复方法有其自身的缺点:升级该库的版本时,需要确保固定类的源代码与新版本库中该类的代码相比是最新的。
另外,请确保使用相同的全名创建自己的类并在其中进行一些更改不会违反该第三方库的许可。