如何处理胖jar依赖

Sim*_*mY4 7 java dependency-management maven

我有一个我在项目中使用的专有依赖项,我无法拒绝.它建在一个大胖子罐子里,里面收集了所有依赖的包裹.我的意思是甚至像slf4j-api,apache-commons,javax包等常见的那些.

将它与我自己的声明的dependecies列表一起使用是有风险的,因为在类加载器中总是会首先加载一个类 - 在fat jar中我的或者过时的类.

我想知道有没有解决这个问题的方法?如何治疗这种肥胖的罐子?我正在使用maven进行依赖管理.

Sim*_*mY4 3

我认为还有另一种方法。我可以将这个库 jar 包装在它自己的自定义类加载器中

URLClassLoader c1 = new URLClassLoader(new Url[] { new URL("file:lib/fatJarDep.jar"});
Run Code Online (Sandbox Code Playgroud)

并创建一个工厂,使用这个隔离的类加载器实例化该库的类

Class.forName("className", true, c1);
Run Code Online (Sandbox Code Playgroud)