jar2jar

Версия Minecraft
1.12.2

will0376

Токсичная личность
2,075
55
584
Добра-бобра всем.
Я уже не знаю, что делать.
Написал бота для диса в моде своё, скомпилировал,подсунул либы - получаю огромную ракету.
unknown.png

не видится org.apache.commons.collections4.map.CaseInsensitiveMap... ХОТЯ ВОТ ОН ЛЕЖИТ
я из-за такой-же ошибки(почти) с либами переписывал бота полностью... Что поделать то??
 

will0376

Токсичная личность
2,075
55
584
Последнее редактирование:

will0376

Токсичная личность
2,075
55
584
Решил при помощи shadowJar.
закинул либы в src/main/resources/META-INF/libraries (все,кроме тех, которые org.apache,org.slf4j)
Мой грабли файл:
Gradle (Groovy):
import ru.justagod.plugin.CutterPlugin

buildscript {
    repositories {
        jcenter()
        maven { url = "http://files.minecraftforge.net/maven" }
    }
    dependencies {
        classpath 'net.minecraftforge.gradle:ForgeGradle:2.3-SNAPSHOT'
    }
}

plugins {
    id "com.github.johnrengelman.shadow" version "4.0.2"
}

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


version = "1.8.9"
group = "ru.will0376.MODID"
archivesBaseName = "MODID"

sourceCompatibility = targetCompatibility = '1.8'
compileJava {
    sourceCompatibility = targetCompatibility = '1.8'
}

minecraft {
    version = "1.12.2-14.23.5.2784"
    runDir = "run"
    mappings = "snapshot_20180814"
}
repositories {
    jcenter()
}
dependencies {
    compile "net.dv8tion:JDA:3.8.3_464"
    compile group: 'org.apache.commons', name: 'commons-collections4', version: '4.1' //Зачем их копировать дополнительно в libraries,когда скачиваем отдельно для ShadowJar?
    compile group: 'org.slf4j', name: 'slf4j-api', version: '1.7.26'
    //compile files(fileTree(dir: 'lib', includes: ['*.jar']))
}
shadowJar{//Тут релокатим все org пакеты(ибо фордж писали ...)
    dependencies {
        include(dependency('org.apache.commons:commons-collections4:.*'))
        include(dependency('org.slf4j:slf4j-api:.*'))
    }
    relocate "org.apache.commons.collections4", "ru.will0376.repack.org.apache.commons.collections4"
    relocate "org.slf4j", "ru.will0376.repack.org.slf4j"
}
reobf {
    shadowJar {} // Reobfuscate the shadowed JAR
}
processResources {
    inputs.property "version", project.version
    inputs.property "mcversion", project.minecraft.version
    
    from(sourceSets.main.resources.srcDirs) {
        include 'mcmod.info'
        expand 'version':project.version, 'mcversion':project.minecraft.version
    }

    jar {
        manifest {
            attributes 'FMLAT': 'forge_at.cfg'
            attributes 'Implementation-Title': 'Gradle'
            attributes 'Implementation-Version': version
           // attributes 'ContainedDeps': 'JDA-3.8.3_464.jar json-20180813.jar kotlin-stdlib-1.3.41.jar nv-websocket-client-2.9.jar okhttp-4.0.1.jar okio-2.2.2.jar slf4j-api-1.7.26.jar trove4j-3.0.3.jar'
        }
    }
    from(sourceSets.main.resources.srcDirs) {
        exclude 'mcmod.info'
    }
}

//mineplugin
cutter {
    annotation = 'ru.justagod.mineplugin.GradleSideOnly'
    classesCache = file('cutter-cache')
    classesDirs = [compileJava.destinationDir]
    def clientSide = side('CLIENT')
    def serverSide = side('SERVER')
    builds {
        client {
            targetSides = [clientSide]
            primalSides = [clientSide, serverSide]
        }
        server {
            targetSides = [serverSide]
            primalSides = [clientSide, serverSide]
        }
    }
}
 
7,099
324
1,510
Потому что эта либа уже есть в forge. Встроенную версию нельзя юзать?
 
7,099
324
1,510
Видимо потому что разные версии
org.apache.commons.collections4.
Такого пакета нет - collections4. Не знаю, что такое CaseInsensitiveMap, но класс с таким именем есть в com.sun.org.apache.xerces.internal.impl.xpath.regex
 
Сверху