我的应用程序使用了我想要改进的第三方jar,并且其中存在错误。我可以从使用反编译器看到错误,并可以轻松修复它们。我无法扩展该类并覆盖问题方法,因为它们是私有的和最终的,并且使用私有和最终字段。
目前,我使用反编译器(这并不完美)来解决这个问题,在具有相同类名,包等的项目中重新创建类。我的gradle构建脚本然后提取原始jar的内容到var testing: MainStruct? = MainStruct()
testing?.array = []
testing?.array!.append(InternalArray())
testing?.array![0].firstName = "TEST"
testing?.array![1].firstName = "TEST 1" - error: Execution was interrupted, reason: EXC_BAD_INSTRUCTION
,这样当gradle编译我的类的版本时,它会覆盖破坏的版本,从而产生一个没有bug的新jar。
我认为这种方法很脏且不可维护,好像新版本出现一样,合并更改可能很困难。此外,Eclipse和IntelliJ不会在两个项目都在我的工作空间中时使用$buildir/main/java
依赖项构建项目,即使它是在命令行上构建的,因为IDE无法查看所有提取的jar的源代码,但只有我重新定义的课程。
彻底解决这个问题的最佳方法是什么?