要解决应用程序中的jar冲突,我使用了阴影插件的重定位功能。它对我有用,但我觉得这是一个hack。我想了解使用重定位功能(如果有)的弊端。
答案 0 :(得分:1)
主要问题是,在直接定义软件包名称(而不仅仅是导入)的情况下,它可能会失败。例如,如果您使用反射并通过其名称(包括程序包名称)实例化一个类,它将生成错误的类。当在清单中定义包装时(可能有一个转换器),可能会发生类似的问题。有关更多信息,请参见plugin info。
另一个可能发生问题的地方是使用相同依赖项的第三方依赖项。考虑例如提供的包装A。如果程序包A依赖于已重定位的程序包,它将在运行时使用提供的实例而不是已重定位的实例。这可能导致无法预料的影响。
另一个问题是,在某些情况下,程序包可能包含一些初始化/静态信息(例如,它一次下载了一些信息或具有一些大的静态表)。在这种情况下,重要的是要了解现在有两个完全独立的软件包实例。