TabooLib / taboolib

Powerful framework for creating multi-platform Minecraft plugin

Home Page:https://tabooproject.org

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

关于依赖加载的几个Bug反馈和优化建议

EikoocS opened this issue · comments

Bug:

  1. 如果动态加载的依赖 依赖于Kotlin 会出现 NoSuchMethodError 异常(Kotlin 重定向导致)
  2. #251
  3. 依赖加载异常后不会卸载插件,但后续的依赖注入会失效,导致逻辑失效

建议:

  1. 首次启动,下载并加载依赖时输出正在尝试加载的依赖(如果可用的话包含层级关系)如果加载的依赖树很庞大,定位加载失败的依赖很困难,在等待加载时也不知道是哪个在耗时间
  2. 支持处理 RuntimeDependencies 时自动处理 Kotlin 重定向
  3. 支持在元数据中定义全局 RuntimeDependencies 便于统一管理全局依赖
  4. 支持将指定依赖单独打包为libs.jar 构建时指定额外参数输出libs.jar 插件数据目录下存在 libs.jar 时自动加载;如果打包依赖在插件,每次构建时间会额外的长
commented

有意义但是也很有难度的建议,会有的。

如果动态加载的依赖 依赖于Kotlin 会出现 NoSuchMethodError 异常(Kotlin 重定向导致)

动态加载的依赖 依赖于Kotlin,需添加 relocate 属性来指向重定向后的 Kotlin 运行库。

依赖加载异常后不会卸载插件,但后续的依赖注入会失效,导致逻辑失效

目前没有有效的多平台实现来卸载插件,以后可能会尝试解决这类问题。

有意义但是也很有难度的建议,会有的。

如果动态加载的依赖 依赖于Kotlin 会出现 NoSuchMethodError 异常(Kotlin 重定向导致)

动态加载的依赖 依赖于Kotlin,需添加 relocate 属性来指向重定向后的 Kotlin 运行库。

依赖加载异常后不会卸载插件,但后续的依赖注入会失效,导致逻辑失效

目前没有有效的多平台实现来卸载插件,以后可能会尝试解决这类问题。

希望能将动态加载时重定向Kotlin运行库作为默认值,或是与gradle设置中是否重定向Kotlin挂钩
因为gradle设置中默认重定向Kotlin,而RuntimeDependency默认没有重定向
RuntimeDependency包含Kotlin时,在默认配置下无法工作