Dante_7
本帖最后由 凋灵兔子 于 2017-7-29 22:55 编辑

楼主先说一下自己的看法,但是因为楼主完全没看过任何的文档(我也不知道上哪儿去找),全靠自己摸索,有错也理所当然。咱们先假设全部的插件都是好用的。
1. 先将全部的插件jar(包括他们之中的每一个类)中标明的主类载入(不执行方法).
2. 正常按照依赖关系一个一个执行对应方法,完成初始化。
本来楼主认为第一步是不存在的,服务器是“读到一个jar,先加载他的类,然后再执行相关的方法”,但是昨天晚上出现一个问题,如果使用了非Bukkit插件的jar包作为前置就会因为找不到类(我们假设这个类是A)而报错。就算使用了ClassLoader动态加载也没用(因为onLoad和onEnable都不运行的)。但是如果在主类中不使用A(包括import和其他任意的引用),则不会报错。为了验证确实是先载入全部的主类而不是一个一个的载入,楼主写了一个专门用来加载外置jar的插件(假设叫JarLoader),让这个插件加载全部的jar,然后让使用A的插件硬依赖JarLoader,问题依然存在。所以楼主得出以上两条结论...
也不知道我说明白了没有,欢迎dalao指正


编辑一下:后来写了一个静态的加载器解决了,在jvm启动之初就加载,果然还是“每一个离奇的问题一定有一个简单的解决方式”

4one_R
Depend: [plugins]

Dante_7

这种方式就是我说的硬依赖,只能影响插件执行方法的速度,至于jar载入的顺序是不能改变的,也就是说这种方式毫无作用

第一页 上一页 下一页 最后一页