如何在第三方库中修复课程

时间:2018-08-28 18:04:42

标签: java shared-libraries

遇到一种情况,我需要在第三方库中修复一个类,我正在寻找一种有效的方法来修复和在我的应用程序中使用它。

以下是我所知道的选项

  1. 获取源代码,修复代码并使用它。
  2. 提供对第三方开源库的修复。

我记得在先前的项目中,我们只是修复了一个类并将其保留在我的源代码中的同一个程序包中,所以不确定这是解决此问题的方法还是出于其他原因而完成。如果这样做,我的修复程序会被执行吗?另外,如果是出于其他原因,我可能会在什么时候使用它。

2 个答案:

答案 0 :(得分:0)

基本上正确的方法是通过pull-request或任何其他方式来提供对第三方开源库的修复。但是,这需要时间,您将不得不等到该库的新版本。 如果您不能等待,则可以在项目中创建具有相同全名的类,并在类的源代码中进行修复。由于Java Classloader的工作方式,它将使用您的固定类,而不是第3方jar中具有相同全名的类。 但是,这种错误修复方法有其自身的缺点:升级该库的版本时,需要确保固定类的源代码与新版本库中该类的代码相比是最新的。 / p>

还请确保使用相同的全名创建自己的课程并在那里进行一些更改不会违反该第三方库的许可。

答案 1 :(得分:0)

另一种解决方法是使用Aspectj在运行时进行拦截和替换