xxl-job 【2.3.0版本严重bug】MethodJobHandler在maven仓库中的包与源码不一致

ubby3x7f  于 5个月前  发布在  Maven
关注(0)|答案(7)|浏览(107)

version: xxl-job-core:2.3.0
path: com.xxl.job.core.handler.impl.MethodJobHandler.execute()

源码中是这样的

maven仓库中的class文件是这样的

daupos2t

daupos2t1#

这个bug不解决的么,有点烦这个

muk1a3rh

muk1a3rh2#

这个bug不解决的么,有点烦这个

我们又着急又无奈😂

t2a7ltrp

t2a7ltrp3#

是不是要到2.3.1版本才会把这个bug修复掉,难受的很,我今天发现,maven jar包里还是错的,但是download source之后居然是对的

w1e3prcc

w1e3prcc4#

是不是要到2.3.1版本才会把这个bug修复掉,难受的很,我今天发现,maven jar包里还是错的,但是download source之后居然是对的

是的,我已经把对比图列出来了。如果想暂时修复掉它,可以考虑自己内部集成一个mvn包,发布到自己的mvn仓库。

igsr9ssn

igsr9ssn5#

关键是就算改成这样是不是也有问题,这里只是传了一个new出来的对象数组,并没有将实参传进目标方法

c6ubokkw

c6ubokkw6#

我试了下,把源代码打包之后反编译查看就是你发的截图这样子,不是源代码和jar包逻辑不一致问题,它们就是同一套代码,只不过可能被编译优化了还是咋的,反编译之后的结果很让人无语

ne5o7dgx

ne5o7dgx7#

public void execute() throws Exception {
        Class<?>[] paramTypes = this.method.getParameterTypes();
        if (paramTypes.length > 0) {
            String jobParam = XxlJobContext.getXxlJobContext().getJobParam();
            Object[] objs = new Object[paramTypes.length];
            if (null != jobParam && !"".equalsIgnoreCase(jobParam.trim())) {
                objs[0] = jobParam;
            }

            this.method.invoke(this.target, objs);
        } else {
            this.method.invoke(this.target);
        }
    }

将这段方法重写为上述逻辑可解决问题,亲测可用

相关问题