gpt4 book ai didi

java - 如何打包 forge mod 的依赖项,同时避免类冲突?

转载 作者:行者123 更新时间:2023-11-30 05:31:59 25 4
gpt4 key购买 nike

这是当前我的 build.gradle 文件(我删除了不必要的任务引用,这些引用不仅工作得很好,而且与当前问题无关):

buildscript {
repositories {
jcenter()
maven {
name = 'forge'
url = 'https://files.minecraftforge.net/maven'
}
}
dependencies {
classpath 'net.minecraftforge.gradle:ForgeGradle:2.1-SNAPSHOT'
}
}

apply plugin: 'net.minecraftforge.gradle.forge'
apply plugin: 'java'

dependencies {
compile('some.library:here:1.2.3') // no extra modules
compile('other.library:here:4.5.6') // multiple modules
}

jar {
from project.configurations.compile.collect { it.isDirectory() ? it : zipTree(it) }
}

目前我有一个系统,它会自动将所有依赖项打包到我的 jar 文件中。我遇到的主要问题是,如果另一个 mod 或文件在我的 mod 之前加载相同的库,我最终会遇到类加载问题,因为我将加载同一个类两次(一个来自另一个 jar,一个来 self 的自己的)。

话虽如此,是否可以避免这样的问题?我该如何真正解释这样的事情呢? forge 是否有一种方法可以控制类加载,使其不会加载重复的库,从而不会出现类冲突?

最佳答案

Minecraft Forge 支持一种称为着色的功能来处理这个问题。当您为 jar 着色时,它会集成到您的 jar 中,但包会被重命名为唯一的名称(以及代码中对它的所有引用)。

来源:https://github.com/MinecraftForge/ForgeGradle/blob/FG_1.2/docs/user-guide/shading.md

关于java - 如何打包 forge mod 的依赖项,同时避免类冲突?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57334859/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com