微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么我的沙箱模块在运行 shadowJar 任务时没有正确继承重定位的包名称?

如何解决为什么我的沙箱模块在运行 shadowJar 任务时没有正确继承重定位的包名称?

我正在开发一个库。它不是通常对依赖项进行着色,而是在编译时下载二进制文件,重新定位它们,然后将它们加载到类路径中。但是,问题是如果我重新定位在运行时下载的 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 举报,一经查实,本站将立刻删除。