Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何为forge mod打包依赖项,同时避免类冲突?_Java_Gradle_Minecraft_Minecraft Forge - Fatal编程技术网

Java 如何为forge mod打包依赖项,同时避免类冲突?

Java 如何为forge mod打包依赖项,同时避免类冲突?,java,gradle,minecraft,minecraft-forge,Java,Gradle,Minecraft,Minecraft Forge,这是我当前的build.gradle文件(我删除了不必要的任务引用,它们不仅工作得很好,而且与当前问题无关): 目前我有一个系统,它会自动将所有依赖项打包到我的jar文件中。我面临的主要问题是,如果另一个mod或文件在我的mod之前加载了相同的库,我最终会遇到类加载问题,因为我将加载同一个类两次(一次从另一个jar加载,一次从我自己的jar加载) 既然如此,有可能避免这样的问题吗?我该如何现实地解释这样一件事?forge是否有一种方法来控制类加载,使重复的库不会被加载,因此不会有类冲突?Mine

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

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


既然如此,有可能避免这样的问题吗?我该如何现实地解释这样一件事?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) }
}