问题描述
我正在开发一个库。它不是通常对依赖项进行着色,而是在编译时下载二进制文件,重新定位它们,然后将它们加载到类路径中。但是,问题是如果我重新定位在运行时下载的 JAR,我还需要重新定位我的库路径以便将路径同步在一起。
例如,如果我的依赖项之一是:uk.co.caprica.vlcj
,并且我将该特定 jar 依赖项重定位到 com.github.pulsebeat02.vlcj
,那么我也需要执行该重定位到我自己的项目。
我尝试使用 shadowJar
任务。
- 我的父模块名为
minecraftmedialibrary-parent
。 - 我的主要 API 模块名为
minecraftmedialibrary-api
。 - 我还有单独的模块,每个模块代表不同的抽象/实现。
- 我会将这些抽象和 API 结合在一起形成一个
minecraftmedialibrary
模块。 - 为了进行测试,我将使用名为
deluxemediaplugin
的沙盒模块来测试代码(并依赖于模块minecraftmedialibrary
)。
在运行 shadowJar 时,我注意到 -all
的构建文件夹中的 minecraftmedialibrary
jar 具有正确的重定位依赖项,其中所有包名称都已正确更改。但是,对于我的 deluxemediaplugin
模块,当它使用该库时,会导致大量未定义类的异常。更仔细地查看沙箱 jar,似乎重新定位的路径不会从库中携带(并且包名称与原始路径相同)。以下是一些显示问题的图像(来自 JD-GUI):
minecraftmedialibrary
Decompiled Code
deluxemediaplugin
Decompiled Code
有人知道可能的解决方案是允许重新定位的路径保留在库代码中而不是保留原始路径吗?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)