shaded jar中包冲突定位-阿里云开发者社区

开发者社区> 开发与运维> 正文
登录阅读全文

shaded jar中包冲突定位

简介: 普通jar包冲突在maven依赖树中基本都可以定位到,shaded jar中不好直接定位,可通过class的url找出jar包名称,最终完成定位。

no such method Exception

通常遇到no such method Exception就是项目中某些包冲突导致,在idea中可以通过自带的“Show dependencies”或者“maven helper”插件来分析依赖树。但是对于打了fat jar、shaded jar的场景下就比较棘手了,可能在dependency里面根本找不到哪里冲突了,此时可利用类的jar包路径来定位到当前classloader加载的是那个包里面的类。

String className = "org.eclipse.jetty.server.session.SessionHandler";
        className = className.replace('.', '/');
        String resource = "/" + className + ".class";
        URL url = SessionHandler.class.getResource(resource);
        System.out.println(">>>url:" + url.getFile());
# >>>url:file:/C:/Users/xiaoyao/.m2/repository/com/foo/bar/foo-bar/1.0/foo-bar-1.0.jar!/org/eclipse/jetty/server/session/SessionHandler.class

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享: