Java 如何为forge mod打包依赖项,同时避免类冲突?
这是我当前的build.gradle文件(我删除了不必要的任务引用,它们不仅工作得很好,而且与当前问题无关): 目前我有一个系统,它会自动将所有依赖项打包到我的jar文件中。我面临的主要问题是,如果另一个mod或文件在我的mod之前加载了相同的库,我最终会遇到类加载问题,因为我将加载同一个类两次(一次从另一个jar加载,一次从我自己的jar加载)Java 如何为forge mod打包依赖项,同时避免类冲突?,java,gradle,minecraft,minecraft-forge,Java,Gradle,Minecraft,Minecraft Forge,这是我当前的build.gradle文件(我删除了不必要的任务引用,它们不仅工作得很好,而且与当前问题无关): 目前我有一个系统,它会自动将所有依赖项打包到我的jar文件中。我面临的主要问题是,如果另一个mod或文件在我的mod之前加载了相同的库,我最终会遇到类加载问题,因为我将加载同一个类两次(一次从另一个jar加载,一次从我自己的jar加载) 既然如此,有可能避免这样的问题吗?我该如何现实地解释这样一件事?forge是否有一种方法来控制类加载,使重复的库不会被加载,因此不会有类冲突?Mine
既然如此,有可能避免这样的问题吗?我该如何现实地解释这样一件事?forge是否有一种方法来控制类加载,使重复的库不会被加载,因此不会有类冲突?Minecraft forge支持一种称为着色的功能来处理此问题。当您对jar进行着色时,它被集成到您的jar中,但是包被重命名为一些独特的东西(以及代码中对它的所有引用)
来源:本指南是否有新链接?那个似乎是404@JaakKütt现在就试试。链接指南有一个最后的提交2015年,似乎不再有效,特别是srgExtra位。有更新版本吗?
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) }
}