滴水三期:day30.1-FileBuffer-ImageBuffer

本文详细介绍了PE文件的结构,包括DOS头、PE头、可选头和节表等,并探讨了从FileBuffer到ImageBuffer再到NewBuffer的过程,以及内存偏移地址与文件偏移地址的转换。此外,提供了C语言实现的相关函数,用于模拟PE文件在内存中的转换和计算内存地址对应的文件偏移地址。

一、FileBuffer到ImageBuffer常见的误区

1.文件执行的总过程

  • 一个硬盘上的文件读入到虚拟内存中(FileBuffer),是原封不动的将硬盘上的文件数据复制一份放到虚拟内存中
  • 接着如果文件要运行,需要先将FileBuffer中的文件数据"拉伸",重载到每一个可执行文件的4GB虚拟内存中!此时称文件印象或者内存印象,即ImageBuffer
  • 但是ImageBuffer就是文件运行时真正在内存中状态吗?或者说文件在ImageBuffer中就是表示文件被执行了吗?不!!!!!!
  • 在ImageBuffer中的文件数据由于按照一定的规则被"拉伸",只是已经无线接近于可被windows执行的文件格式了!但是此时还不代表文件已经被执行了,因为此时文件也只是处在4GB的虚拟内存中,如果文件被执行操作系统还需要做一些事情,将文件真正的装入内存中,等待CPU的分配执行
  • 所以不要理解为ImageBuffer中的状态就是文件正在被执行,后面操作系统还要做很多事情才能让ImageBuffer中的文件真正执行起来的

2.SizeOfRawData一定大于Misc.VirtualSize?

  • SizeOfRawData表示此节在硬盘上经过文件对齐后的大小;Misc.VirtualSize表示此节在内存中没有对齐的大小。那么是不是说SizeOfRawData一定大于等于Misc.VirtualSize呢?不一定!!!!!!!

  • 我们写C语言的时候知道如果你定义一个数组已经初始化,比如int arr[1000] = {0};,此时编译成.exe文件存放在硬盘上时,这1000个int类型的0肯定会存放在某一个节中,并且分配1000个0的空间,这个空间大小是多少,最后重载到ImageBuffer时还是多少,即Misc.VirtualSize不管文件在硬盘上还是内存中的值都是一致的。所以,SizeOfRawData一般都是大于等于Misc.VirtualSize的

  • 但是如果我们定义成int arr[1000];,表示数据还未初始化,并且如果程序中没有使用过或初始化过这块内存空间,那么我们平时看汇编会发现其实编译器还没有做任何事情,这就只是告诉编译器需要预留出1000个int宽度大小的内存空间。所以如果某一个节中存在已经被定义过但还未初始化的数据,那么文件在硬盘上不会显式的留出空间,即SizeOfRawData中不会算上未初始化数据的空间;但是此节的Misc.VirtualSize为加载到内存中时节的未对齐的大小,那么这个值就需要算上给未初始化留出来空间后的整个节的大小,故在内存中的节本身的总大小可能会大于硬盘中的此节文件对齐后的大小。

二、手动模拟FileBuffer到ImageBuffer过程

  1. 先在硬盘上找一个可执行文件,将文件的数据复制到内存中,即FileBuffer中(前面的练习做过很多次了)

  2. 根据SizeOfImage的大小,再使用malloc开辟一块ImageBuffer,用0x00初始化ImageBuffer(SizeOfImage即为文件加载到4GB虚拟内存的大小)

  3. 因为所有头和节表经过文件对齐后的这段数据经过PE loader加载到ImageBuffer是不会变的,所以直接可以将所有头和节表经过文件对齐后的这块数据从FileBuffer中复制到ImageBuffer中

  4. 接着就是复制所有节的数据:需要使用循环,先复制第一个节的内容。通过第一个节对应节表中的PointerToRawData的值确定第一个节的起始地址;再通过SizeOfRawData的值得到从起始地址开始需要复制多少字节的数据到ImageBuffer中;再接着将这些数据复制到ImageBuffer中的哪个位置呢?就需要通过此节对应的节表中的VirtualAddress决定将数据从ImageBuffer中的哪个地址开始赋值,由于是相对地址,所以还需要知道ImageBase,但是!!我们是用C语言模拟PE的加载过程,此时ImageBuffer的首地址是由malloc申请的,不是真正的ImageBase!(只有当文件真正执行时,操作系统把文件拉伸装入虚拟内存时,才是ImageBase)所以malloc申请的首地址 + VirtualAddress就是最终将第一节数据复制到ImageBuffer中的起始地址。后面的节的数据以此类推从FileBuffer复制到ImageBuffer中

    为什么选择SizeOfRawData,不选择Misc.VirtualSize来确定需要复制的节的大小?因为上面说过,Misc.VirtualSize的值由于节中有未初始化的数据且未使用而计算出预留的空间装入内存后的总大小的值可能会很大,如果这个值大到已经包含了后面一个节的数据,那么按照这个值将FileBuffer中的数据复制到ImageBuffer中很可能会把下一个节的数据也复制过去,所以直接用SizeOfRawData就可以了。但是如果节中包含未初始化数据,这样做其实就不太准确了,但是可以大致模拟这个过程即可。(更好一点的做法是比较SizeOfRawData和VirtualSize,选择较小值)

    image-20211223163538138

三、内存偏移地址与文件偏移地址换算

  • 比如一个文件加载到4GB内存中的某一个数据地址为0x501234,那么怎么算出这个内存地址对应到文件在硬盘上时的地址是多少,即算出文件偏移地址?

    1. 先算出此内存地址相对于文件在内存中的起始地址的偏移量
    2. 接着通过这个偏移量循环和每一个节的VirtualAddress做比较,当此偏移量大于某一个节的VirtualAddress并且小于此VirtualAddress + Misc.VirtualSize,就说明这个内存地址就在这个节中
    3. 再用此偏移量 - 此节的VirtualAddress得到这个内存地址相对于所在节的偏移量
    4. 接着找内存地址所在节的PointerToRawData,通过PointerToRawData + 内存地址相对于所在节的偏移量来得到此内存地址在硬盘上时相对于文件的偏移量
  • 举例:现在我们要找0x501234对应的文件偏移是多少?

    • 0x501234 - 0x500000 = 0x1234
    • 因为0x1000 < 0x1234 < 0x1000 + Misc.VirtualSize,所以0x501234在可执行文件的第一个节中
    • 0x1234 - 0x1000 = 0x234
    • 由于第一个节的PointerToRawData为0x400,且假设FileBuffer的起始地址为0(相对的),则0x501234对应的文件偏移地址为0x400 + 0x234 = 0x634
    image-20211223170518081

四、作业

1.C语言实现如下功能

  • 如图:

    image-20211223170629821
  • 代码如下:

    #include "stdafx.h"
    #include <stdlib.h>
    #include <string.h>
    
    typedef unsigned short WORD;
    typedef unsigned int DWORD;
    typedef unsigned char BYTE;
    
    //宏定义MZ标记和PE标记,方便后面判断
    #define MZ 0x5A4D
    #define PE 0x4550
    #define IMAGE_SIZEOF_SHORT_NAME 8
    
    //DOS头
    struct _IMAGE_DOS_HEADER {
         
         
    	WORD e_magic;  //MZ标记
    	WORD e_cblp;
    	WORD e_cp;
    	WORD e_crlc;
    	WORD e_cparhdr;
    	WORD e_minalloc;
    	WORD e_maxalloc;
    	WORD e_ss;
    	WORD e_sp;
    	WORD e_csum;
    	WORD e_ip;
    	WORD e_cs;
    	WORD e_lfarlc;
    	WORD e_ovno;
    	WORD e_res[4];
    	WORD e_oemid;
    	WORD e_oeminfo;
    	WORD e_res2[10];
    	DWORD e_lfanew;  //PE文件真正开始的偏移地址
    };
    
    //标准PE头
    struct _IMAGE_FILE_HEADER {
         
         
    	WORD Machine;  //文件运行平台
    	WORD NumberOfSections;  //节数量
    	DWORD TimeDateStamp;  //时间戳
    	DWORD PointerToSymbolTable;
    	DWORD NumberOfSymbols;
    	WORD SizeOfOptionalHeader;  //可选PE头大小
    	WORD Characteristics;  //特征值
    };
    
    //可选PE头
    struct _IMAGE_OPTIONAL_HEADER {
         
         
    	WORD Magic;  //文件类型
    	BYTE MajorLinkerVersion;
    	BYTE MinorLinkerVersion;
    	DWORD SizeOfCode;   //代码节文件对齐后的大小
    	DWORD SizeOfInitializedData;  //初始化数据文件对齐后的大小
    	DWORD SizeOfUninitializedData;  //未初始化数据文件对齐后大小
    	DWORD AddressOfEntryPoint;  //程序入口点(偏移量)
    	DWORD BaseOfCode;  //代码基址
    	DWORD BaseOfData;  //数据基址
    	DWORD ImageBase;   //内存镜像基址
    	DWORD SectionAlignment;  //内存对齐粒度
    	DWORD FileAlignment;  //文件对齐粒度
    	WORD MajorOperatingSystemVersion;
    	WORD MinorOperatingSystemVersion;
    	WORD MajorImageVersion;
    	WORD MinorImageVersion;
    	WORD MajorSubsystemVersion;
    	WORD MinorSubsystemVersion;
    	DWORD Win32VersionValue;
    	DWORD SizeOfImage;  //文件装入虚拟内存后大小
    	DWORD SizeOfHeaders;  //DOS、NT头和节表大小
    	DWORD CheckSum;  //校验和
    	WORD Subsystem;
    	WORD DllCharacteristics;
    	DWORD SizeOfStackReserve;  //预留堆栈大
To honour the JVM settings for this build a new JVM will be forked. Please consider using the daemon: https://docs.gradle.org/5.6.4/userguide/gradle_daemon.html. Daemon will be stopped at the end of the build stopping after processing > Configure project : New Dep: net.minecraftforge:forge:1.12.2-14.23.5.2864_mapped_snapshot_20171003-1.12 > Task :dependencies ------------------------------------------------------------ Root project ------------------------------------------------------------ __obfuscated - Generated scope for obfuscated dependencies No dependencies _compileJava_1 +--- net.minecraft:client:1.12.2 | +--- com.mojang:patchy:1.3.9 | +--- oshi-project:oshi-core:1.1 | +--- net.java.dev.jna:jna:4.4.0 | +--- net.java.dev.jna:platform:3.4.0 | +--- com.ibm.icu:icu4j-core-mojang:51.2 | +--- net.sf.jopt-simple:jopt-simple:5.0.3 -> 5.0.4 | +--- com.paulscode:codecjorbis:20101023 | +--- com.paulscode:codecwav:20101023 | +--- com.paulscode:libraryjavasound:20101123 | +--- com.paulscode:librarylwjglopenal:20100824 | +--- com.paulscode:soundsystem:20120107 | +--- io.netty:netty-all:4.1.9.Final | +--- com.google.guava:guava:21.0 | +--- org.apache.commons:commons-lang3:3.5 | +--- commons-io:commons-io:2.5 | +--- commons-codec:commons-codec:1.10 | +--- net.java.jinput:jinput:2.0.5 | | +--- net.java.jutils:jutils:1.0.0 | | \--- net.java.jinput:jinput-platform:2.0.5 | +--- net.java.jutils:jutils:1.0.0 | +--- com.google.code.gson:gson:2.8.0 | +--- com.mojang:authlib:1.5.25 | +--- com.mojang:realms:1.10.22 | +--- org.apache.commons:commons-compress:1.8.1 | +--- org.apache.httpcomponents:httpclient:4.3.3 | | +--- org.apache.httpcomponents:httpcore:4.3.2 | | +--- commons-logging:commons-logging:1.1.3 | | \--- commons-codec:commons-codec:1.6 -> 1.10 | +--- commons-logging:commons-logging:1.1.3 | +--- org.apache.httpcomponents:httpcore:4.3.2 | +--- it.unimi.dsi:fastutil:7.1.0 | +--- org.apache.logging.log4j:log4j-api:2.8.1 -> 2.15.0 | +--- org.apache.logging.log4j:log4j-core:2.8.1 -> 2.15.0 | | \--- org.apache.logging.log4j:log4j-api:2.15.0 | +--- org.lwjgl.lwjgl:lwjgl:2.9.4-nightly-20150209 | +--- org.lwjgl.lwjgl:lwjgl_util:2.9.4-nightly-20150209 | +--- org.lwjgl.lwjgl:lwjgl-platform:2.9.4-nightly-20150209 | +--- net.java.jinput:jinput-platform:2.0.5 | +--- com.mojang:text2speech:1.10.3 | \--- com.google.code.findbugs:jsr305:3.0.1 +--- com.google.code.findbugs:jsr305:3.0.1 +--- net.minecraftforge:mergetool:1.0.13 | +--- org.ow2.asm:asm:6.2 | +--- org.ow2.asm:asm-tree:6.2 | | \--- org.ow2.asm:asm:6.2 | +--- org.ow2.asm:asm-util:6.2 | | +--- org.ow2.asm:asm:6.2 | | +--- org.ow2.asm:asm-tree:6.2 (*) | | \--- org.ow2.asm:asm-analysis:6.2 | | \--- org.ow2.asm:asm-tree:6.2 (*) | \--- net.sf.jopt-simple:jopt-simple:5.0.4 +--- org.ow2.asm:asm-debug-all:5.2 +--- net.minecraft:launchwrapper:1.12 +--- org.jline:jline:3.5.1 +--- com.typesafe.akka:akka-actor_2.11:2.3.3 | +--- org.scala-lang:scala-library:2.11.1 | \--- com.typesafe:config:1.2.1 +--- com.typesafe:config:1.2.1 +--- org.scala-lang:scala-actors-migration_2.11:1.1.0 | +--- org.scala-lang:scala-library:2.11.0 -> 2.11.1 | +--- org.scala-lang:scala-actors:2.11.0 | | \--- org.scala-lang:scala-library:2.11.0 -> 2.11.1 | \--- org.scala-lang.plugins:scala-continuations-library_2.11:1.0.1 -> 1.0.2_mc +--- org.scala-lang:scala-compiler:2.11.1 | +--- org.scala-lang:scala-library:2.11.1 | +--- org.scala-lang:scala-reflect:2.11.1 | | \--- org.scala-lang:scala-library:2.11.1 | +--- org.scala-lang.modules:scala-xml_2.11:1.0.2 | | \--- org.scala-lang:scala-library:2.11.1 | \--- org.scala-lang.modules:scala-parser-combinators_2.11:1.0.1 | \--- org.scala-lang:scala-library:2.11.0 -> 2.11.1 +--- org.scala-lang.plugins:scala-continuations-library_2.11:1.0.2_mc +--- org.scala-lang.plugins:scala-continuations-plugin_2.11.1:1.0.2_mc +--- org.scala-lang:scala-library:2.11.1 +--- org.scala-lang:scala-parser-combinators_2.11:1.0.1 +--- org.scala-lang:scala-reflect:2.11.1 (*) +--- org.scala-lang:scala-swing_2.11:1.0.1 +--- org.scala-lang:scala-xml_2.11:1.0.2 +--- lzma:lzma:0.0.1 +--- java3d:vecmath:1.5.2 +--- net.sf.trove4j:trove4j:3.0.3 +--- org.apache.maven:maven-artifact:3.5.3 | +--- org.codehaus.plexus:plexus-utils:3.1.0 | \--- org.apache.commons:commons-lang3:3.5 +--- net.sf.jopt-simple:jopt-simple:5.0.3 -> 5.0.4 +--- org.apache.logging.log4j:log4j-api:2.15.0 +--- org.apache.logging.log4j:log4j-core:2.15.0 (*) \--- net.minecraftforge:legacydev:0.2.3.+ -> 0.2.3.1 annotationProcessor - Annotation processors and their dependencies for source set 'main'. No dependencies apiElements - API elements for main. (n) No dependencies archives - Configuration for archive artifacts. No dependencies compile - Dependencies for source set 'main' (deprecated, use 'implementation' instead). \--- net.minecraftforge:forge:1.12.2-14.23.5.2864_mapped_snapshot_20171003-1.12 +--- net.minecraft:client:1.12.2 | +--- com.mojang:patchy:1.3.9 | +--- oshi-project:oshi-core:1.1 | +--- net.java.dev.jna:jna:4.4.0 | +--- net.java.dev.jna:platform:3.4.0 | +--- com.ibm.icu:icu4j-core-mojang:51.2 | +--- net.sf.jopt-simple:jopt-simple:5.0.3 -> 5.0.4 | +--- com.paulscode:codecjorbis:20101023 | +--- com.paulscode:codecwav:20101023 | +--- com.paulscode:libraryjavasound:20101123 | +--- com.paulscode:librarylwjglopenal:20100824 | +--- com.paulscode:soundsystem:20120107 | +--- io.netty:netty-all:4.1.9.Final | +--- com.google.guava:guava:21.0 | +--- org.apache.commons:commons-lang3:3.5 | +--- commons-io:commons-io:2.5 | +--- commons-codec:commons-codec:1.10 | +--- net.java.jinput:jinput:2.0.5 | | +--- net.java.jutils:jutils:1.0.0 | | \--- net.java.jinput:jinput-platform:2.0.5 | +--- net.java.jutils:jutils:1.0.0 | +--- com.google.code.gson:gson:2.8.0 | +--- com.mojang:authlib:1.5.25 | +--- com.mojang:realms:1.10.22 | +--- org.apache.commons:commons-compress:1.8.1 | +--- org.apache.httpcomponents:httpclient:4.3.3 | | +--- org.apache.httpcomponents:httpcore:4.3.2 | | +--- commons-logging:commons-logging:1.1.3 | | \--- commons-codec:commons-codec:1.6 -> 1.10 | +--- commons-logging:commons-logging:1.1.3 | +--- org.apache.httpcomponents:httpcore:4.3.2 | +--- it.unimi.dsi:fastutil:7.1.0 | +--- org.apache.logging.log4j:log4j-api:2.8.1 -> 2.15.0 | +--- org.apache.logging.log4j:log4j-core:2.8.1 -> 2.15.0 | | \--- org.apache.logging.log4j:log4j-api:2.15.0 | +--- org.lwjgl.lwjgl:lwjgl:2.9.4-nightly-20150209 | +--- org.lwjgl.lwjgl:lwjgl_util:2.9.4-nightly-20150209 | +--- org.lwjgl.lwjgl:lwjgl-platform:2.9.4-nightly-20150209 | +--- net.java.jinput:jinput-platform:2.0.5 | +--- com.mojang:text2speech:1.10.3 | \--- com.google.code.findbugs:jsr305:3.0.1 +--- com.google.code.findbugs:jsr305:3.0.1 +--- net.minecraftforge:mergetool:1.0.13 | +--- org.ow2.asm:asm:6.2 | +--- org.ow2.asm:asm-tree:6.2 | | \--- org.ow2.asm:asm:6.2 | +--- org.ow2.asm:asm-util:6.2 | | +--- org.ow2.asm:asm:6.2 | | +--- org.ow2.asm:asm-tree:6.2 (*) | | \--- org.ow2.asm:asm-analysis:6.2 | | \--- org.ow2.asm:asm-tree:6.2 (*) | \--- net.sf.jopt-simple:jopt-simple:5.0.4 +--- net.minecraft:mappings_snapshot:20171003-1.12 +--- org.ow2.asm:asm-debug-all:5.2 +--- net.minecraft:launchwrapper:1.12 +--- org.jline:jline:3.5.1 +--- com.typesafe.akka:akka-actor_2.11:2.3.3 | +--- org.scala-lang:scala-library:2.11.1 | \--- com.typesafe:config:1.2.1 +--- com.typesafe:config:1.2.1 +--- org.scala-lang:scala-actors-migration_2.11:1.1.0 | +--- org.scala-lang:scala-library:2.11.0 -> 2.11.1 | +--- org.scala-lang:scala-actors:2.11.0 | | \--- org.scala-lang:scala-library:2.11.0 -> 2.11.1 | \--- org.scala-lang.plugins:scala-continuations-library_2.11:1.0.1 -> 1.0.2_mc +--- org.scala-lang:scala-compiler:2.11.1 | +--- org.scala-lang:scala-library:2.11.1 | +--- org.scala-lang:scala-reflect:2.11.1 | | \--- org.scala-lang:scala-library:2.11.1 | +--- org.scala-lang.modules:scala-xml_2.11:1.0.2 | | \--- org.scala-lang:scala-library:2.11.1 | \--- org.scala-lang.modules:scala-parser-combinators_2.11:1.0.1 | \--- org.scala-lang:scala-library:2.11.0 -> 2.11.1 +--- org.scala-lang.plugins:scala-continuations-library_2.11:1.0.2_mc +--- org.scala-lang.plugins:scala-continuations-plugin_2.11.1:1.0.2_mc +--- org.scala-lang:scala-library:2.11.1 +--- org.scala-lang:scala-parser-combinators_2.11:1.0.1 +--- org.scala-lang:scala-reflect:2.11.1 (*) +--- org.scala-lang:scala-swing_2.11:1.0.1 +--- org.scala-lang:scala-xml_2.11:1.0.2 +--- lzma:lzma:0.0.1 +--- java3d:vecmath:1.5.2 +--- net.sf.trove4j:trove4j:3.0.3 +--- org.apache.maven:maven-artifact:3.5.3 | +--- org.codehaus.plexus:plexus-utils:3.1.0 | \--- org.apache.commons:commons-lang3:3.5 +--- net.sf.jopt-simple:jopt-simple:5.0.3 -> 5.0.4 +--- org.apache.logging.log4j:log4j-api:2.15.0 +--- org.apache.logging.log4j:log4j-core:2.15.0 (*) \--- net.minecraftforge:legacydev:0.2.3.+ -> 0.2.3.1 compileClasspath - Compile classpath for source set 'main'. \--- net.minecraftforge:forge:1.12.2-14.23.5.2864_mapped_snapshot_20171003-1.12 +--- net.minecraft:client:1.12.2 | +--- com.mojang:patchy:1.3.9 | +--- oshi-project:oshi-core:1.1 | +--- net.java.dev.jna:jna:4.4.0 | +--- net.java.dev.jna:platform:3.4.0 | +--- com.ibm.icu:icu4j-core-mojang:51.2 | +--- net.sf.jopt-simple:jopt-simple:5.0.3 | +--- com.paulscode:codecjorbis:20101023 | +--- com.paulscode:codecwav:20101023 | +--- com.paulscode:libraryjavasound:20101123 | +--- com.paulscode:librarylwjglopenal:20100824 | +--- com.paulscode:soundsystem:20120107 | +--- io.netty:netty-all:4.1.9.Final | +--- com.google.guava:guava:21.0 | +--- org.apache.commons:commons-lang3:3.5 | +--- commons-io:commons-io:2.5 | +--- commons-codec:commons-codec:1.10 | +--- net.java.jinput:jinput:2.0.5 | | \--- net.java.jutils:jutils:1.0.0 | +--- net.java.jutils:jutils:1.0.0 | +--- com.google.code.gson:gson:2.8.0 | +--- com.mojang:authlib:1.5.25 | +--- com.mojang:realms:1.10.22 | +--- org.apache.commons:commons-compress:1.8.1 | +--- org.apache.httpcomponents:httpclient:4.3.3 | | +--- org.apache.httpcomponents:httpcore:4.3.2 | | +--- commons-logging:commons-logging:1.1.3 | | \--- commons-codec:commons-codec:1.6 -> 1.10 | +--- commons-logging:commons-logging:1.1.3 | +--- org.apache.httpcomponents:httpcore:4.3.2 | +--- it.unimi.dsi:fastutil:7.1.0 | +--- org.apache.logging.log4j:log4j-api:2.8.1 -> 2.15.0 | +--- org.apache.logging.log4j:log4j-core:2.8.1 -> 2.15.0 | | \--- org.apache.logging.log4j:log4j-api:2.15.0 | +--- org.lwjgl.lwjgl:lwjgl:2.9.4-nightly-20150209 | +--- org.lwjgl.lwjgl:lwjgl_util:2.9.4-nightly-20150209 | +--- org.lwjgl.lwjgl:lwjgl-platform:2.9.4-nightly-20150209 | +--- com.mojang:text2speech:1.10.3 | \--- com.google.code.findbugs:jsr305:3.0.1 +--- com.google.code.findbugs:jsr305:3.0.1 +--- net.minecraftforge:mergetool:1.0.13 +--- net.minecraft:mappings_snapshot:20171003-1.12 +--- org.ow2.asm:asm-debug-all:5.2 +--- net.minecraft:launchwrapper:1.12 +--- org.jline:jline:3.5.1 +--- com.typesafe.akka:akka-actor_2.11:2.3.3 | +--- org.scala-lang:scala-library:2.11.1 | \--- com.typesafe:config:1.2.1 +--- com.typesafe:config:1.2.1 +--- org.scala-lang:scala-actors-migration_2.11:1.1.0 | +--- org.scala-lang:scala-library:2.11.0 -> 2.11.1 | +--- org.scala-lang:scala-actors:2.11.0 | | \--- org.scala-lang:scala-library:2.11.0 -> 2.11.1 | \--- org.scala-lang.plugins:scala-continuations-library_2.11:1.0.1 -> 1.0.2_mc +--- org.scala-lang:scala-compiler:2.11.1 | +--- org.scala-lang:scala-library:2.11.1 | +--- org.scala-lang:scala-reflect:2.11.1 | | \--- org.scala-lang:scala-library:2.11.1 | +--- org.scala-lang.modules:scala-xml_2.11:1.0.2 | | \--- org.scala-lang:scala-library:2.11.1 | \--- org.scala-lang.modules:scala-parser-combinators_2.11:1.0.1 | \--- org.scala-lang:scala-library:2.11.0 -> 2.11.1 +--- org.scala-lang.plugins:scala-continuations-library_2.11:1.0.2_mc +--- org.scala-lang.plugins:scala-continuations-plugin_2.11.1:1.0.2_mc +--- org.scala-lang:scala-library:2.11.1 +--- org.scala-lang:scala-parser-combinators_2.11:1.0.1 +--- org.scala-lang:scala-reflect:2.11.1 (*) +--- org.scala-lang:scala-swing_2.11:1.0.1 +--- org.scala-lang:scala-xml_2.11:1.0.2 +--- lzma:lzma:0.0.1 +--- java3d:vecmath:1.5.2 +--- net.sf.trove4j:trove4j:3.0.3 +--- org.apache.maven:maven-artifact:3.5.3 | +--- org.codehaus.plexus:plexus-utils:3.1.0 | \--- org.apache.commons:commons-lang3:3.5 +--- net.sf.jopt-simple:jopt-simple:5.0.3 +--- org.apache.logging.log4j:log4j-api:2.15.0 +--- org.apache.logging.log4j:log4j-core:2.15.0 (*) \--- net.minecraftforge:legacydev:0.2.3.+ -> 0.2.3.1 compileOnly - Compile only dependencies for source set 'main'. No dependencies default - Configuration for default artifacts. \--- net.minecraftforge:forge:1.12.2-14.23.5.2864_mapped_snapshot_20171003-1.12 +--- net.minecraft:client:1.12.2 | +--- com.mojang:patchy:1.3.9 | +--- oshi-project:oshi-core:1.1 | +--- net.java.dev.jna:jna:4.4.0 | +--- net.java.dev.jna:platform:3.4.0 | +--- com.ibm.icu:icu4j-core-mojang:51.2 | +--- net.sf.jopt-simple:jopt-simple:5.0.3 -> 5.0.4 | +--- com.paulscode:codecjorbis:20101023 | +--- com.paulscode:codecwav:20101023 | +--- com.paulscode:libraryjavasound:20101123 | +--- com.paulscode:librarylwjglopenal:20100824 | +--- com.paulscode:soundsystem:20120107 | +--- io.netty:netty-all:4.1.9.Final | +--- com.google.guava:guava:21.0 | +--- org.apache.commons:commons-lang3:3.5 | +--- commons-io:commons-io:2.5 | +--- commons-codec:commons-codec:1.10 | +--- net.java.jinput:jinput:2.0.5 | | +--- net.java.jutils:jutils:1.0.0 | | \--- net.java.jinput:jinput-platform:2.0.5 | +--- net.java.jutils:jutils:1.0.0 | +--- com.google.code.gson:gson:2.8.0 | +--- com.mojang:authlib:1.5.25 | +--- com.mojang:realms:1.10.22 | +--- org.apache.commons:commons-compress:1.8.1 | +--- org.apache.httpcomponents:httpclient:4.3.3 | | +--- org.apache.httpcomponents:httpcore:4.3.2 | | +--- commons-logging:commons-logging:1.1.3 | | \--- commons-codec:commons-codec:1.6 -> 1.10 | +--- commons-logging:commons-logging:1.1.3 | +--- org.apache.httpcomponents:httpcore:4.3.2 | +--- it.unimi.dsi:fastutil:7.1.0 | +--- org.apache.logging.log4j:log4j-api:2.8.1 -> 2.15.0 | +--- org.apache.logging.log4j:log4j-core:2.8.1 -> 2.15.0 | | \--- org.apache.logging.log4j:log4j-api:2.15.0 | +--- org.lwjgl.lwjgl:lwjgl:2.9.4-nightly-20150209 | +--- org.lwjgl.lwjgl:lwjgl_util:2.9.4-nightly-20150209 | +--- org.lwjgl.lwjgl:lwjgl-platform:2.9.4-nightly-20150209 | +--- net.java.jinput:jinput-platform:2.0.5 | +--- com.mojang:text2speech:1.10.3 | \--- com.google.code.findbugs:jsr305:3.0.1 +--- com.google.code.findbugs:jsr305:3.0.1 +--- net.minecraftforge:mergetool:1.0.13 | +--- org.ow2.asm:asm:6.2 | +--- org.ow2.asm:asm-tree:6.2 | | \--- org.ow2.asm:asm:6.2 | +--- org.ow2.asm:asm-util:6.2 | | +--- org.ow2.asm:asm:6.2 | | +--- org.ow2.asm:asm-tree:6.2 (*) | | \--- org.ow2.asm:asm-analysis:6.2 | | \--- org.ow2.asm:asm-tree:6.2 (*) | \--- net.sf.jopt-simple:jopt-simple:5.0.4 +--- net.minecraft:mappings_snapshot:20171003-1.12 +--- org.ow2.asm:asm-debug-all:5.2 +--- net.minecraft:launchwrapper:1.12 +--- org.jline:jline:3.5.1 +--- com.typesafe.akka:akka-actor_2.11:2.3.3 | +--- org.scala-lang:scala-library:2.11.1 | \--- com.typesafe:config:1.2.1 +--- com.typesafe:config:1.2.1 +--- org.scala-lang:scala-actors-migration_2.11:1.1.0 | +--- org.scala-lang:scala-library:2.11.0 -> 2.11.1 | +--- org.scala-lang:scala-actors:2.11.0 | | \--- org.scala-lang:scala-library:2.11.0 -> 2.11.1 | \--- org.scala-lang.plugins:scala-continuations-library_2.11:1.0.1 -> 1.0.2_mc +--- org.scala-lang:scala-compiler:2.11.1 | +--- org.scala-lang:scala-library:2.11.1 | +--- org.scala-lang:scala-reflect:2.11.1 | | \--- org.scala-lang:scala-library:2.11.1 | +--- org.scala-lang.modules:scala-xml_2.11:1.0.2 | | \--- org.scala-lang:scala-library:2.11.1 | \--- org.scala-lang.modules:scala-parser-combinators_2.11:1.0.1 | \--- org.scala-lang:scala-library:2.11.0 -> 2.11.1 +--- org.scala-lang.plugins:scala-continuations-library_2.11:1.0.2_mc +--- org.scala-lang.plugins:scala-continuations-plugin_2.11.1:1.0.2_mc +--- org.scala-lang:scala-library:2.11.1 +--- org.scala-lang:scala-parser-combinators_2.11:1.0.1 +--- org.scala-lang:scala-reflect:2.11.1 (*) +--- org.scala-lang:scala-swing_2.11:1.0.1 +--- org.scala-lang:scala-xml_2.11:1.0.2 +--- lzma:lzma:0.0.1 +--- java3d:vecmath:1.5.2 +--- net.sf.trove4j:trove4j:3.0.3 +--- org.apache.maven:maven-artifact:3.5.3 | +--- org.codehaus.plexus:plexus-utils:3.1.0 | \--- org.apache.commons:commons-lang3:3.5 +--- net.sf.jopt-simple:jopt-simple:5.0.3 -> 5.0.4 +--- org.apache.logging.log4j:log4j-api:2.15.0 +--- org.apache.logging.log4j:log4j-core:2.15.0 (*) \--- net.minecraftforge:legacydev:0.2.3.+ -> 0.2.3.1 deobf No dependencies implementation - Implementation only dependencies for source set 'main'. (n) No dependencies minecraft \--- net.minecraftforge:forge:1.12.2-14.23.5.2864_mapped_snapshot_20171003-1.12 +--- net.minecraft:client:1.12.2 | +--- com.mojang:patchy:1.3.9 | +--- oshi-project:oshi-core:1.1 | +--- net.java.dev.jna:jna:4.4.0 | +--- net.java.dev.jna:platform:3.4.0 | +--- com.ibm.icu:icu4j-core-mojang:51.2 | +--- net.sf.jopt-simple:jopt-simple:5.0.3 -> 5.0.4 | +--- com.paulscode:codecjorbis:20101023 | +--- com.paulscode:codecwav:20101023 | +--- com.paulscode:libraryjavasound:20101123 | +--- com.paulscode:librarylwjglopenal:20100824 | +--- com.paulscode:soundsystem:20120107 | +--- io.netty:netty-all:4.1.9.Final | +--- com.google.guava:guava:21.0 | +--- org.apache.commons:commons-lang3:3.5 | +--- commons-io:commons-io:2.5 | +--- commons-codec:commons-codec:1.10 | +--- net.java.jinput:jinput:2.0.5 | | +--- net.java.jutils:jutils:1.0.0 | | \--- net.java.jinput:jinput-platform:2.0.5 | +--- net.java.jutils:jutils:1.0.0 | +--- com.google.code.gson:gson:2.8.0 | +--- com.mojang:authlib:1.5.25 | +--- com.mojang:realms:1.10.22 | +--- org.apache.commons:commons-compress:1.8.1 | +--- org.apache.httpcomponents:httpclient:4.3.3 | | +--- org.apache.httpcomponents:httpcore:4.3.2 | | +--- commons-logging:commons-logging:1.1.3 | | \--- commons-codec:commons-codec:1.6 -> 1.10 | +--- commons-logging:commons-logging:1.1.3 | +--- org.apache.httpcomponents:httpcore:4.3.2 | +--- it.unimi.dsi:fastutil:7.1.0 | +--- org.apache.logging.log4j:log4j-api:2.8.1 -> 2.15.0 | +--- org.apache.logging.log4j:log4j-core:2.8.1 -> 2.15.0 | | \--- org.apache.logging.log4j:log4j-api:2.15.0 | +--- org.lwjgl.lwjgl:lwjgl:2.9.4-nightly-20150209 | +--- org.lwjgl.lwjgl:lwjgl_util:2.9.4-nightly-20150209 | +--- org.lwjgl.lwjgl:lwjgl-platform:2.9.4-nightly-20150209 | +--- net.java.jinput:jinput-platform:2.0.5 | +--- com.mojang:text2speech:1.10.3 | \--- com.google.code.findbugs:jsr305:3.0.1 +--- com.google.code.findbugs:jsr305:3.0.1 +--- net.minecraftforge:mergetool:1.0.13 | +--- org.ow2.asm:asm:6.2 | +--- org.ow2.asm:asm-tree:6.2 | | \--- org.ow2.asm:asm:6.2 | +--- org.ow2.asm:asm-util:6.2 | | +--- org.ow2.asm:asm:6.2 | | +--- org.ow2.asm:asm-tree:6.2 (*) | | \--- org.ow2.asm:asm-analysis:6.2 | | \--- org.ow2.asm:asm-tree:6.2 (*) | \--- net.sf.jopt-simple:jopt-simple:5.0.4 +--- net.minecraft:mappings_snapshot:20171003-1.12 +--- org.ow2.asm:asm-debug-all:5.2 +--- net.minecraft:launchwrapper:1.12 +--- org.jline:jline:3.5.1 +--- com.typesafe.akka:akka-actor_2.11:2.3.3 | +--- org.scala-lang:scala-library:2.11.1 | \--- com.typesafe:config:1.2.1 +--- com.typesafe:config:1.2.1 +--- org.scala-lang:scala-actors-migration_2.11:1.1.0 | +--- org.scala-lang:scala-library:2.11.0 -> 2.11.1 | +--- org.scala-lang:scala-actors:2.11.0 | | \--- org.scala-lang:scala-library:2.11.0 -> 2.11.1 | \--- org.scala-lang.plugins:scala-continuations-library_2.11:1.0.1 -> 1.0.2_mc +--- org.scala-lang:scala-compiler:2.11.1 | +--- org.scala-lang:scala-library:2.11.1 | +--- org.scala-lang:scala-reflect:2.11.1 | | \--- org.scala-lang:scala-library:2.11.1 | +--- org.scala-lang.modules:scala-xml_2.11:1.0.2 | | \--- org.scala-lang:scala-library:2.11.1 | \--- org.scala-lang.modules:scala-parser-combinators_2.11:1.0.1 | \--- org.scala-lang:scala-library:2.11.0 -> 2.11.1 +--- org.scala-lang.plugins:scala-continuations-library_2.11:1.0.2_mc +--- org.scala-lang.plugins:scala-continuations-plugin_2.11.1:1.0.2_mc +--- org.scala-lang:scala-library:2.11.1 +--- org.scala-lang:scala-parser-combinators_2.11:1.0.1 +--- org.scala-lang:scala-reflect:2.11.1 (*) +--- org.scala-lang:scala-swing_2.11:1.0.1 +--- org.scala-lang:scala-xml_2.11:1.0.2 +--- lzma:lzma:0.0.1 +--- java3d:vecmath:1.5.2 +--- net.sf.trove4j:trove4j:3.0.3 +--- org.apache.maven:maven-artifact:3.5.3 | +--- org.codehaus.plexus:plexus-utils:3.1.0 | \--- org.apache.commons:commons-lang3:3.5 +--- net.sf.jopt-simple:jopt-simple:5.0.3 -> 5.0.4 +--- org.apache.logging.log4j:log4j-api:2.15.0 +--- org.apache.logging.log4j:log4j-core:2.15.0 (*) \--- net.minecraftforge:legacydev:0.2.3.+ -> 0.2.3.1 runtime - Runtime dependencies for source set 'main' (deprecated, use 'runtimeOnly' instead). \--- net.minecraftforge:forge:1.12.2-14.23.5.2864_mapped_snapshot_20171003-1.12 +--- net.minecraft:client:1.12.2 | +--- com.mojang:patchy:1.3.9 | +--- oshi-project:oshi-core:1.1 | +--- net.java.dev.jna:jna:4.4.0 | +--- net.java.dev.jna:platform:3.4.0 | +--- com.ibm.icu:icu4j-core-mojang:51.2 | +--- net.sf.jopt-simple:jopt-simple:5.0.3 -> 5.0.4 | +--- com.paulscode:codecjorbis:20101023 | +--- com.paulscode:codecwav:20101023 | +--- com.paulscode:libraryjavasound:20101123 | +--- com.paulscode:librarylwjglopenal:20100824 | +--- com.paulscode:soundsystem:20120107 | +--- io.netty:netty-all:4.1.9.Final | +--- com.google.guava:guava:21.0 | +--- org.apache.commons:commons-lang3:3.5 | +--- commons-io:commons-io:2.5 | +--- commons-codec:commons-codec:1.10 | +--- net.java.jinput:jinput:2.0.5 | | +--- net.java.jutils:jutils:1.0.0 | | \--- net.java.jinput:jinput-platform:2.0.5 | +--- net.java.jutils:jutils:1.0.0 | +--- com.google.code.gson:gson:2.8.0 | +--- com.mojang:authlib:1.5.25 | +--- com.mojang:realms:1.10.22 | +--- org.apache.commons:commons-compress:1.8.1 | +--- org.apache.httpcomponents:httpclient:4.3.3 | | +--- org.apache.httpcomponents:httpcore:4.3.2 | | +--- commons-logging:commons-logging:1.1.3 | | \--- commons-codec:commons-codec:1.6 -> 1.10 | +--- commons-logging:commons-logging:1.1.3 | +--- org.apache.httpcomponents:httpcore:4.3.2 | +--- it.unimi.dsi:fastutil:7.1.0 | +--- org.apache.logging.log4j:log4j-api:2.8.1 -> 2.15.0 | +--- org.apache.logging.log4j:log4j-core:2.8.1 -> 2.15.0 | | \--- org.apache.logging.log4j:log4j-api:2.15.0 | +--- org.lwjgl.lwjgl:lwjgl:2.9.4-nightly-20150209 | +--- org.lwjgl.lwjgl:lwjgl_util:2.9.4-nightly-20150209 | +--- org.lwjgl.lwjgl:lwjgl-platform:2.9.4-nightly-20150209 | +--- net.java.jinput:jinput-platform:2.0.5 | +--- com.mojang:text2speech:1.10.3 | \--- com.google.code.findbugs:jsr305:3.0.1 +--- com.google.code.findbugs:jsr305:3.0.1 +--- net.minecraftforge:mergetool:1.0.13 | +--- org.ow2.asm:asm:6.2 | +--- org.ow2.asm:asm-tree:6.2 | | \--- org.ow2.asm:asm:6.2 | +--- org.ow2.asm:asm-util:6.2 | | +--- org.ow2.asm:asm:6.2 | | +--- org.ow2.asm:asm-tree:6.2 (*) | | \--- org.ow2.asm:asm-analysis:6.2 | | \--- org.ow2.asm:asm-tree:6.2 (*) | \--- net.sf.jopt-simple:jopt-simple:5.0.4 +--- net.minecraft:mappings_snapshot:20171003-1.12 +--- org.ow2.asm:asm-debug-all:5.2 +--- net.minecraft:launchwrapper:1.12 +--- org.jline:jline:3.5.1 +--- com.typesafe.akka:akka-actor_2.11:2.3.3 | +--- org.scala-lang:scala-library:2.11.1 | \--- com.typesafe:config:1.2.1 +--- com.typesafe:config:1.2.1 +--- org.scala-lang:scala-actors-migration_2.11:1.1.0 | +--- org.scala-lang:scala-library:2.11.0 -> 2.11.1 | +--- org.scala-lang:scala-actors:2.11.0 | | \--- org.scala-lang:scala-library:2.11.0 -> 2.11.1 | \--- org.scala-lang.plugins:scala-continuations-library_2.11:1.0.1 -> 1.0.2_mc +--- org.scala-lang:scala-compiler:2.11.1 | +--- org.scala-lang:scala-library:2.11.1 | +--- org.scala-lang:scala-reflect:2.11.1 | | \--- org.scala-lang:scala-library:2.11.1 | +--- org.scala-lang.modules:scala-xml_2.11:1.0.2 | | \--- org.scala-lang:scala-library:2.11.1 | \--- org.scala-lang.modules:scala-parser-combinators_2.11:1.0.1 | \--- org.scala-lang:scala-library:2.11.0 -> 2.11.1 +--- org.scala-lang.plugins:scala-continuations-library_2.11:1.0.2_mc +--- org.scala-lang.plugins:scala-continuations-plugin_2.11.1:1.0.2_mc +--- org.scala-lang:scala-library:2.11.1 +--- org.scala-lang:scala-parser-combinators_2.11:1.0.1 +--- org.scala-lang:scala-reflect:2.11.1 (*) +--- org.scala-lang:scala-swing_2.11:1.0.1 +--- org.scala-lang:scala-xml_2.11:1.0.2 +--- lzma:lzma:0.0.1 +--- java3d:vecmath:1.5.2 +--- net.sf.trove4j:trove4j:3.0.3 +--- org.apache.maven:maven-artifact:3.5.3 | +--- org.codehaus.plexus:plexus-utils:3.1.0 | \--- org.apache.commons:commons-lang3:3.5 +--- net.sf.jopt-simple:jopt-simple:5.0.3 -> 5.0.4 +--- org.apache.logging.log4j:log4j-api:2.15.0 +--- org.apache.logging.log4j:log4j-core:2.15.0 (*) \--- net.minecraftforge:legacydev:0.2.3.+ -> 0.2.3.1 runtimeClasspath - Runtime classpath of source set 'main'. \--- net.minecraftforge:forge:1.12.2-14.23.5.2864_mapped_snapshot_20171003-1.12 +--- net.minecraft:client:1.12.2 | +--- com.mojang:patchy:1.3.9 | +--- oshi-project:oshi-core:1.1 | +--- net.java.dev.jna:jna:4.4.0 | +--- net.java.dev.jna:platform:3.4.0 | +--- com.ibm.icu:icu4j-core-mojang:51.2 | +--- net.sf.jopt-simple:jopt-simple:5.0.3 -> 5.0.4 | +--- com.paulscode:codecjorbis:20101023 | +--- com.paulscode:codecwav:20101023 | +--- com.paulscode:libraryjavasound:20101123 | +--- com.paulscode:librarylwjglopenal:20100824 | +--- com.paulscode:soundsystem:20120107 | +--- io.netty:netty-all:4.1.9.Final | +--- com.google.guava:guava:21.0 | +--- org.apache.commons:commons-lang3:3.5 | +--- commons-io:commons-io:2.5 | +--- commons-codec:commons-codec:1.10 | +--- net.java.jinput:jinput:2.0.5 | | +--- net.java.jutils:jutils:1.0.0 | | \--- net.java.jinput:jinput-platform:2.0.5 | +--- net.java.jutils:jutils:1.0.0 | +--- com.google.code.gson:gson:2.8.0 | +--- com.mojang:authlib:1.5.25 | +--- com.mojang:realms:1.10.22 | +--- org.apache.commons:commons-compress:1.8.1 | +--- org.apache.httpcomponents:httpclient:4.3.3 | | +--- org.apache.httpcomponents:httpcore:4.3.2 | | +--- commons-logging:commons-logging:1.1.3 | | \--- commons-codec:commons-codec:1.6 -> 1.10 | +--- commons-logging:commons-logging:1.1.3 | +--- org.apache.httpcomponents:httpcore:4.3.2 | +--- it.unimi.dsi:fastutil:7.1.0 | +--- org.apache.logging.log4j:log4j-api:2.8.1 -> 2.15.0 | +--- org.apache.logging.log4j:log4j-core:2.8.1 -> 2.15.0 | | \--- org.apache.logging.log4j:log4j-api:2.15.0 | +--- org.lwjgl.lwjgl:lwjgl:2.9.4-nightly-20150209 | +--- org.lwjgl.lwjgl:lwjgl_util:2.9.4-nightly-20150209 | +--- org.lwjgl.lwjgl:lwjgl-platform:2.9.4-nightly-20150209 | +--- net.java.jinput:jinput-platform:2.0.5 | +--- com.mojang:text2speech:1.10.3 | \--- com.google.code.findbugs:jsr305:3.0.1 +--- com.google.code.findbugs:jsr305:3.0.1 +--- net.minecraftforge:mergetool:1.0.13 | +--- org.ow2.asm:asm:6.2 | +--- org.ow2.asm:asm-tree:6.2 | | \--- org.ow2.asm:asm:6.2 | +--- org.ow2.asm:asm-util:6.2 | | +--- org.ow2.asm:asm:6.2 | | +--- org.ow2.asm:asm-tree:6.2 (*) | | \--- org.ow2.asm:asm-analysis:6.2 | | \--- org.ow2.asm:asm-tree:6.2 (*) | \--- net.sf.jopt-simple:jopt-simple:5.0.4 +--- net.minecraft:mappings_snapshot:20171003-1.12 +--- org.ow2.asm:asm-debug-all:5.2 +--- net.minecraft:launchwrapper:1.12 +--- org.jline:jline:3.5.1 +--- com.typesafe.akka:akka-actor_2.11:2.3.3 | +--- org.scala-lang:scala-library:2.11.1 | \--- com.typesafe:config:1.2.1 +--- com.typesafe:config:1.2.1 +--- org.scala-lang:scala-actors-migration_2.11:1.1.0 | +--- org.scala-lang:scala-library:2.11.0 -> 2.11.1 | +--- org.scala-lang:scala-actors:2.11.0 | | \--- org.scala-lang:scala-library:2.11.0 -> 2.11.1 | \--- org.scala-lang.plugins:scala-continuations-library_2.11:1.0.1 -> 1.0.2_mc +--- org.scala-lang:scala-compiler:2.11.1 | +--- org.scala-lang:scala-library:2.11.1 | +--- org.scala-lang:scala-reflect:2.11.1 | | \--- org.scala-lang:scala-library:2.11.1 | +--- org.scala-lang.modules:scala-xml_2.11:1.0.2 | | \--- org.scala-lang:scala-library:2.11.1 | \--- org.scala-lang.modules:scala-parser-combinators_2.11:1.0.1 | \--- org.scala-lang:scala-library:2.11.0 -> 2.11.1 +--- org.scala-lang.plugins:scala-continuations-library_2.11:1.0.2_mc +--- org.scala-lang.plugins:scala-continuations-plugin_2.11.1:1.0.2_mc +--- org.scala-lang:scala-library:2.11.1 +--- org.scala-lang:scala-parser-combinators_2.11:1.0.1 +--- org.scala-lang:scala-reflect:2.11.1 (*) +--- org.scala-lang:scala-swing_2.11:1.0.1 +--- org.scala-lang:scala-xml_2.11:1.0.2 +--- lzma:lzma:0.0.1 +--- java3d:vecmath:1.5.2 +--- net.sf.trove4j:trove4j:3.0.3 +--- org.apache.maven:maven-artifact:3.5.3 | +--- org.codehaus.plexus:plexus-utils:3.1.0 | \--- org.apache.commons:commons-lang3:3.5 +--- net.sf.jopt-simple:jopt-simple:5.0.3 -> 5.0.4 +--- org.apache.logging.log4j:log4j-api:2.15.0 +--- org.apache.logging.log4j:log4j-core:2.15.0 (*) \--- net.minecraftforge:legacydev:0.2.3.+ -> 0.2.3.1 runtimeElements - Elements of runtime for main. (n) No dependencies runtimeOnly - Runtime only dependencies for source set 'main'. (n) No dependencies testAnnotationProcessor - Annotation processors and their dependencies for source set 'test'. No dependencies testCompile - Dependencies for source set 'test' (deprecated, use 'testImplementation' instead). \--- net.minecraftforge:forge:1.12.2-14.23.5.2864_mapped_snapshot_20171003-1.12 +--- net.minecraft:client:1.12.2 | +--- com.mojang:patchy:1.3.9 | +--- oshi-project:oshi-core:1.1 | +--- net.java.dev.jna:jna:4.4.0 | +--- net.java.dev.jna:platform:3.4.0 | +--- com.ibm.icu:icu4j-core-mojang:51.2 | +--- net.sf.jopt-simple:jopt-simple:5.0.3 -> 5.0.4 | +--- com.paulscode:codecjorbis:20101023 | +--- com.paulscode:codecwav:20101023 | +--- com.paulscode:libraryjavasound:20101123 | +--- com.paulscode:librarylwjglopenal:20100824 | +--- com.paulscode:soundsystem:20120107 | +--- io.netty:netty-all:4.1.9.Final | +--- com.google.guava:guava:21.0 | +--- org.apache.commons:commons-lang3:3.5 | +--- commons-io:commons-io:2.5 | +--- commons-codec:commons-codec:1.10 | +--- net.java.jinput:jinput:2.0.5 | | +--- net.java.jutils:jutils:1.0.0 | | \--- net.java.jinput:jinput-platform:2.0.5 | +--- net.java.jutils:jutils:1.0.0 | +--- com.google.code.gson:gson:2.8.0 | +--- com.mojang:authlib:1.5.25 | +--- com.mojang:realms:1.10.22 | +--- org.apache.commons:commons-compress:1.8.1 | +--- org.apache.httpcomponents:httpclient:4.3.3 | | +--- org.apache.httpcomponents:httpcore:4.3.2 | | +--- commons-logging:commons-logging:1.1.3 | | \--- commons-codec:commons-codec:1.6 -> 1.10 | +--- commons-logging:commons-logging:1.1.3 | +--- org.apache.httpcomponents:httpcore:4.3.2 | +--- it.unimi.dsi:fastutil:7.1.0 | +--- org.apache.logging.log4j:log4j-api:2.8.1 -> 2.15.0 | +--- org.apache.logging.log4j:log4j-core:2.8.1 -> 2.15.0 | | \--- org.apache.logging.log4j:log4j-api:2.15.0 | +--- org.lwjgl.lwjgl:lwjgl:2.9.4-nightly-20150209 | +--- org.lwjgl.lwjgl:lwjgl_util:2.9.4-nightly-20150209 | +--- org.lwjgl.lwjgl:lwjgl-platform:2.9.4-nightly-20150209 | +--- net.java.jinput:jinput-platform:2.0.5 | +--- com.mojang:text2speech:1.10.3 | \--- com.google.code.findbugs:jsr305:3.0.1 +--- com.google.code.findbugs:jsr305:3.0.1 +--- net.minecraftforge:mergetool:1.0.13 | +--- org.ow2.asm:asm:6.2 | +--- org.ow2.asm:asm-tree:6.2 | | \--- org.ow2.asm:asm:6.2 | +--- org.ow2.asm:asm-util:6.2 | | +--- org.ow2.asm:asm:6.2 | | +--- org.ow2.asm:asm-tree:6.2 (*) | | \--- org.ow2.asm:asm-analysis:6.2 | | \--- org.ow2.asm:asm-tree:6.2 (*) | \--- net.sf.jopt-simple:jopt-simple:5.0.4 +--- net.minecraft:mappings_snapshot:20171003-1.12 +--- org.ow2.asm:asm-debug-all:5.2 +--- net.minecraft:launchwrapper:1.12 +--- org.jline:jline:3.5.1 +--- com.typesafe.akka:akka-actor_2.11:2.3.3 | +--- org.scala-lang:scala-library:2.11.1 | \--- com.typesafe:config:1.2.1 +--- com.typesafe:config:1.2.1 +--- org.scala-lang:scala-actors-migration_2.11:1.1.0 | +--- org.scala-lang:scala-library:2.11.0 -> 2.11.1 | +--- org.scala-lang:scala-actors:2.11.0 | | \--- org.scala-lang:scala-library:2.11.0 -> 2.11.1 | \--- org.scala-lang.plugins:scala-continuations-library_2.11:1.0.1 -> 1.0.2_mc +--- org.scala-lang:scala-compiler:2.11.1 | +--- org.scala-lang:scala-library:2.11.1 | +--- org.scala-lang:scala-reflect:2.11.1 | | \--- org.scala-lang:scala-library:2.11.1 | +--- org.scala-lang.modules:scala-xml_2.11:1.0.2 | | \--- org.scala-lang:scala-library:2.11.1 | \--- org.scala-lang.modules:scala-parser-combinators_2.11:1.0.1 | \--- org.scala-lang:scala-library:2.11.0 -> 2.11.1 +--- org.scala-lang.plugins:scala-continuations-library_2.11:1.0.2_mc +--- org.scala-lang.plugins:scala-continuations-plugin_2.11.1:1.0.2_mc +--- org.scala-lang:scala-library:2.11.1 +--- org.scala-lang:scala-parser-combinators_2.11:1.0.1 +--- org.scala-lang:scala-reflect:2.11.1 (*) +--- org.scala-lang:scala-swing_2.11:1.0.1 +--- org.scala-lang:scala-xml_2.11:1.0.2 +--- lzma:lzma:0.0.1 +--- java3d:vecmath:1.5.2 +--- net.sf.trove4j:trove4j:3.0.3 +--- org.apache.maven:maven-artifact:3.5.3 | +--- org.codehaus.plexus:plexus-utils:3.1.0 | \--- org.apache.commons:commons-lang3:3.5 +--- net.sf.jopt-simple:jopt-simple:5.0.3 -> 5.0.4 +--- org.apache.logging.log4j:log4j-api:2.15.0 +--- org.apache.logging.log4j:log4j-core:2.15.0 (*) \--- net.minecraftforge:legacydev:0.2.3.+ -> 0.2.3.1 testCompileClasspath - Compile classpath for source set 'test'. \--- net.minecraftforge:forge:1.12.2-14.23.5.2864_mapped_snapshot_20171003-1.12 +--- net.minecraft:client:1.12.2 | +--- com.mojang:patchy:1.3.9 | +--- oshi-project:oshi-core:1.1 | +--- net.java.dev.jna:jna:4.4.0 | +--- net.java.dev.jna:platform:3.4.0 | +--- com.ibm.icu:icu4j-core-mojang:51.2 | +--- net.sf.jopt-simple:jopt-simple:5.0.3 | +--- com.paulscode:codecjorbis:20101023 | +--- com.paulscode:codecwav:20101023 | +--- com.paulscode:libraryjavasound:20101123 | +--- com.paulscode:librarylwjglopenal:20100824 | +--- com.paulscode:soundsystem:20120107 | +--- io.netty:netty-all:4.1.9.Final | +--- com.google.guava:guava:21.0 | +--- org.apache.commons:commons-lang3:3.5 | +--- commons-io:commons-io:2.5 | +--- commons-codec:commons-codec:1.10 | +--- net.java.jinput:jinput:2.0.5 | | \--- net.java.jutils:jutils:1.0.0 | +--- net.java.jutils:jutils:1.0.0 | +--- com.google.code.gson:gson:2.8.0 | +--- com.mojang:authlib:1.5.25 | +--- com.mojang:realms:1.10.22 | +--- org.apache.commons:commons-compress:1.8.1 | +--- org.apache.httpcomponents:httpclient:4.3.3 | | +--- org.apache.httpcomponents:httpcore:4.3.2 | | +--- commons-logging:commons-logging:1.1.3 | | \--- commons-codec:commons-codec:1.6 -> 1.10 | +--- commons-logging:commons-logging:1.1.3 | +--- org.apache.httpcomponents:httpcore:4.3.2 | +--- it.unimi.dsi:fastutil:7.1.0 | +--- org.apache.logging.log4j:log4j-api:2.8.1 -> 2.15.0 | +--- org.apache.logging.log4j:log4j-core:2.8.1 -> 2.15.0 | | \--- org.apache.logging.log4j:log4j-api:2.15.0 | +--- org.lwjgl.lwjgl:lwjgl:2.9.4-nightly-20150209 | +--- org.lwjgl.lwjgl:lwjgl_util:2.9.4-nightly-20150209 | +--- org.lwjgl.lwjgl:lwjgl-platform:2.9.4-nightly-20150209 | +--- com.mojang:text2speech:1.10.3 | \--- com.google.code.findbugs:jsr305:3.0.1 +--- com.google.code.findbugs:jsr305:3.0.1 +--- net.minecraftforge:mergetool:1.0.13 +--- net.minecraft:mappings_snapshot:20171003-1.12 +--- org.ow2.asm:asm-debug-all:5.2 +--- net.minecraft:launchwrapper:1.12 +--- org.jline:jline:3.5.1 +--- com.typesafe.akka:akka-actor_2.11:2.3.3 | +--- org.scala-lang:scala-library:2.11.1 | \--- com.typesafe:config:1.2.1 +--- com.typesafe:config:1.2.1 +--- org.scala-lang:scala-actors-migration_2.11:1.1.0 | +--- org.scala-lang:scala-library:2.11.0 -> 2.11.1 | +--- org.scala-lang:scala-actors:2.11.0 | | \--- org.scala-lang:scala-library:2.11.0 -> 2.11.1 | \--- org.scala-lang.plugins:scala-continuations-library_2.11:1.0.1 -> 1.0.2_mc +--- org.scala-lang:scala-compiler:2.11.1 | +--- org.scala-lang:scala-library:2.11.1 | +--- org.scala-lang:scala-reflect:2.11.1 | | \--- org.scala-lang:scala-library:2.11.1 | +--- org.scala-lang.modules:scala-xml_2.11:1.0.2 | | \--- org.scala-lang:scala-library:2.11.1 | \--- org.scala-lang.modules:scala-parser-combinators_2.11:1.0.1 | \--- org.scala-lang:scala-library:2.11.0 -> 2.11.1 +--- org.scala-lang.plugins:scala-continuations-library_2.11:1.0.2_mc +--- org.scala-lang.plugins:scala-continuations-plugin_2.11.1:1.0.2_mc +--- org.scala-lang:scala-library:2.11.1 +--- org.scala-lang:scala-parser-combinators_2.11:1.0.1 +--- org.scala-lang:scala-reflect:2.11.1 (*) +--- org.scala-lang:scala-swing_2.11:1.0.1 +--- org.scala-lang:scala-xml_2.11:1.0.2 +--- lzma:lzma:0.0.1 +--- java3d:vecmath:1.5.2 +--- net.sf.trove4j:trove4j:3.0.3 +--- org.apache.maven:maven-artifact:3.5.3 | +--- org.codehaus.plexus:plexus-utils:3.1.0 | \--- org.apache.commons:commons-lang3:3.5 +--- net.sf.jopt-simple:jopt-simple:5.0.3 +--- org.apache.logging.log4j:log4j-api:2.15.0 +--- org.apache.logging.log4j:log4j-core:2.15.0 (*) \--- net.minecraftforge:legacydev:0.2.3.+ -> 0.2.3.1 testCompileOnly - Compile only dependencies for source set 'test'. No dependencies testImplementation - Implementation only dependencies for source set 'test'. (n) No dependencies testRuntime - Runtime dependencies for source set 'test' (deprecated, use 'testRuntimeOnly' instead). \--- net.minecraftforge:forge:1.12.2-14.23.5.2864_mapped_snapshot_20171003-1.12 +--- net.minecraft:client:1.12.2 | +--- com.mojang:patchy:1.3.9 | +--- oshi-project:oshi-core:1.1 | +--- net.java.dev.jna:jna:4.4.0 | +--- net.java.dev.jna:platform:3.4.0 | +--- com.ibm.icu:icu4j-core-mojang:51.2 | +--- net.sf.jopt-simple:jopt-simple:5.0.3 -> 5.0.4 | +--- com.paulscode:codecjorbis:20101023 | +--- com.paulscode:codecwav:20101023 | +--- com.paulscode:libraryjavasound:20101123 | +--- com.paulscode:librarylwjglopenal:20100824 | +--- com.paulscode:soundsystem:20120107 | +--- io.netty:netty-all:4.1.9.Final | +--- com.google.guava:guava:21.0 | +--- org.apache.commons:commons-lang3:3.5 | +--- commons-io:commons-io:2.5 | +--- commons-codec:commons-codec:1.10 | +--- net.java.jinput:jinput:2.0.5 | | +--- net.java.jutils:jutils:1.0.0 | | \--- net.java.jinput:jinput-platform:2.0.5 | +--- net.java.jutils:jutils:1.0.0 | +--- com.google.code.gson:gson:2.8.0 | +--- com.mojang:authlib:1.5.25 | +--- com.mojang:realms:1.10.22 | +--- org.apache.commons:commons-compress:1.8.1 | +--- org.apache.httpcomponents:httpclient:4.3.3 | | +--- org.apache.httpcomponents:httpcore:4.3.2 | | +--- commons-logging:commons-logging:1.1.3 | | \--- commons-codec:commons-codec:1.6 -> 1.10 | +--- commons-logging:commons-logging:1.1.3 | +--- org.apache.httpcomponents:httpcore:4.3.2 | +--- it.unimi.dsi:fastutil:7.1.0 | +--- org.apache.logging.log4j:log4j-api:2.8.1 -> 2.15.0 | +--- org.apache.logging.log4j:log4j-core:2.8.1 -> 2.15.0 | | \--- org.apache.logging.log4j:log4j-api:2.15.0 | +--- org.lwjgl.lwjgl:lwjgl:2.9.4-nightly-20150209 | +--- org.lwjgl.lwjgl:lwjgl_util:2.9.4-nightly-20150209 | +--- org.lwjgl.lwjgl:lwjgl-platform:2.9.4-nightly-20150209 | +--- net.java.jinput:jinput-platform:2.0.5 | +--- com.mojang:text2speech:1.10.3 | \--- com.google.code.findbugs:jsr305:3.0.1 +--- com.google.code.findbugs:jsr305:3.0.1 +--- net.minecraftforge:mergetool:1.0.13 | +--- org.ow2.asm:asm:6.2 | +--- org.ow2.asm:asm-tree:6.2 | | \--- org.ow2.asm:asm:6.2 | +--- org.ow2.asm:asm-util:6.2 | | +--- org.ow2.asm:asm:6.2 | | +--- org.ow2.asm:asm-tree:6.2 (*) | | \--- org.ow2.asm:asm-analysis:6.2 | | \--- org.ow2.asm:asm-tree:6.2 (*) | \--- net.sf.jopt-simple:jopt-simple:5.0.4 +--- net.minecraft:mappings_snapshot:20171003-1.12 +--- org.ow2.asm:asm-debug-all:5.2 +--- net.minecraft:launchwrapper:1.12 +--- org.jline:jline:3.5.1 +--- com.typesafe.akka:akka-actor_2.11:2.3.3 | +--- org.scala-lang:scala-library:2.11.1 | \--- com.typesafe:config:1.2.1 +--- com.typesafe:config:1.2.1 +--- org.scala-lang:scala-actors-migration_2.11:1.1.0 | +--- org.scala-lang:scala-library:2.11.0 -> 2.11.1 | +--- org.scala-lang:scala-actors:2.11.0 | | \--- org.scala-lang:scala-library:2.11.0 -> 2.11.1 | \--- org.scala-lang.plugins:scala-continuations-library_2.11:1.0.1 -> 1.0.2_mc +--- org.scala-lang:scala-compiler:2.11.1 | +--- org.scala-lang:scala-library:2.11.1 | +--- org.scala-lang:scala-reflect:2.11.1 | | \--- org.scala-lang:scala-library:2.11.1 | +--- org.scala-lang.modules:scala-xml_2.11:1.0.2 | | \--- org.scala-lang:scala-library:2.11.1 | \--- org.scala-lang.modules:scala-parser-combinators_2.11:1.0.1 | \--- org.scala-lang:scala-library:2.11.0 -> 2.11.1 +--- org.scala-lang.plugins:scala-continuations-library_2.11:1.0.2_mc +--- org.scala-lang.plugins:scala-continuations-plugin_2.11.1:1.0.2_mc +--- org.scala-lang:scala-library:2.11.1 +--- org.scala-lang:scala-parser-combinators_2.11:1.0.1 +--- org.scala-lang:scala-reflect:2.11.1 (*) +--- org.scala-lang:scala-swing_2.11:1.0.1 +--- org.scala-lang:scala-xml_2.11:1.0.2 +--- lzma:lzma:0.0.1 +--- java3d:vecmath:1.5.2 +--- net.sf.trove4j:trove4j:3.0.3 +--- org.apache.maven:maven-artifact:3.5.3 | +--- org.codehaus.plexus:plexus-utils:3.1.0 | \--- org.apache.commons:commons-lang3:3.5 +--- net.sf.jopt-simple:jopt-simple:5.0.3 -> 5.0.4 +--- org.apache.logging.log4j:log4j-api:2.15.0 +--- org.apache.logging.log4j:log4j-core:2.15.0 (*) \--- net.minecraftforge:legacydev:0.2.3.+ -> 0.2.3.1 testRuntimeClasspath - Runtime classpath of source set 'test'. \--- net.minecraftforge:forge:1.12.2-14.23.5.2864_mapped_snapshot_20171003-1.12 +--- net.minecraft:client:1.12.2 | +--- com.mojang:patchy:1.3.9 | +--- oshi-project:oshi-core:1.1 | +--- net.java.dev.jna:jna:4.4.0 | +--- net.java.dev.jna:platform:3.4.0 | +--- com.ibm.icu:icu4j-core-mojang:51.2 | +--- net.sf.jopt-simple:jopt-simple:5.0.3 -> 5.0.4 | +--- com.paulscode:codecjorbis:20101023 | +--- com.paulscode:codecwav:20101023 | +--- com.paulscode:libraryjavasound:20101123 | +--- com.paulscode:librarylwjglopenal:20100824 | +--- com.paulscode:soundsystem:20120107 | +--- io.netty:netty-all:4.1.9.Final | +--- com.google.guava:guava:21.0 | +--- org.apache.commons:commons-lang3:3.5 | +--- commons-io:commons-io:2.5 | +--- commons-codec:commons-codec:1.10 | +--- net.java.jinput:jinput:2.0.5 | | +--- net.java.jutils:jutils:1.0.0 | | \--- net.java.jinput:jinput-platform:2.0.5 | +--- net.java.jutils:jutils:1.0.0 | +--- com.google.code.gson:gson:2.8.0 | +--- com.mojang:authlib:1.5.25 | +--- com.mojang:realms:1.10.22 | +--- org.apache.commons:commons-compress:1.8.1 | +--- org.apache.httpcomponents:httpclient:4.3.3 | | +--- org.apache.httpcomponents:httpcore:4.3.2 | | +--- commons-logging:commons-logging:1.1.3 | | \--- commons-codec:commons-codec:1.6 -> 1.10 | +--- commons-logging:commons-logging:1.1.3 | +--- org.apache.httpcomponents:httpcore:4.3.2 | +--- it.unimi.dsi:fastutil:7.1.0 | +--- org.apache.logging.log4j:log4j-api:2.8.1 -> 2.15.0 | +--- org.apache.logging.log4j:log4j-core:2.8.1 -> 2.15.0 | | \--- org.apache.logging.log4j:log4j-api:2.15.0 | +--- org.lwjgl.lwjgl:lwjgl:2.9.4-nightly-20150209 | +--- org.lwjgl.lwjgl:lwjgl_util:2.9.4-nightly-20150209 | +--- org.lwjgl.lwjgl:lwjgl-platform:2.9.4-nightly-20150209 | +--- net.java.jinput:jinput-platform:2.0.5 | +--- com.mojang:text2speech:1.10.3 | \--- com.google.code.findbugs:jsr305:3.0.1 +--- com.google.code.findbugs:jsr305:3.0.1 +--- net.minecraftforge:mergetool:1.0.13 | +--- org.ow2.asm:asm:6.2 | +--- org.ow2.asm:asm-tree:6.2 | | \--- org.ow2.asm:asm:6.2 | +--- org.ow2.asm:asm-util:6.2 | | +--- org.ow2.asm:asm:6.2 | | +--- org.ow2.asm:asm-tree:6.2 (*) | | \--- org.ow2.asm:asm-analysis:6.2 | | \--- org.ow2.asm:asm-tree:6.2 (*) | \--- net.sf.jopt-simple:jopt-simple:5.0.4 +--- net.minecraft:mappings_snapshot:20171003-1.12 +--- org.ow2.asm:asm-debug-all:5.2 +--- net.minecraft:launchwrapper:1.12 +--- org.jline:jline:3.5.1 +--- com.typesafe.akka:akka-actor_2.11:2.3.3 | +--- org.scala-lang:scala-library:2.11.1 | \--- com.typesafe:config:1.2.1 +--- com.typesafe:config:1.2.1 +--- org.scala-lang:scala-actors-migration_2.11:1.1.0 | +--- org.scala-lang:scala-library:2.11.0 -> 2.11.1 | +--- org.scala-lang:scala-actors:2.11.0 | | \--- org.scala-lang:scala-library:2.11.0 -> 2.11.1 | \--- org.scala-lang.plugins:scala-continuations-library_2.11:1.0.1 -> 1.0.2_mc +--- org.scala-lang:scala-compiler:2.11.1 | +--- org.scala-lang:scala-library:2.11.1 | +--- org.scala-lang:scala-reflect:2.11.1 | | \--- org.scala-lang:scala-library:2.11.1 | +--- org.scala-lang.modules:scala-xml_2.11:1.0.2 | | \--- org.scala-lang:scala-library:2.11.1 | \--- org.scala-lang.modules:scala-parser-combinators_2.11:1.0.1 | \--- org.scala-lang:scala-library:2.11.0 -> 2.11.1 +--- org.scala-lang.plugins:scala-continuations-library_2.11:1.0.2_mc +--- org.scala-lang.plugins:scala-continuations-plugin_2.11.1:1.0.2_mc +--- org.scala-lang:scala-library:2.11.1 +--- org.scala-lang:scala-parser-combinators_2.11:1.0.1 +--- org.scala-lang:scala-reflect:2.11.1 (*) +--- org.scala-lang:scala-swing_2.11:1.0.1 +--- org.scala-lang:scala-xml_2.11:1.0.2 +--- lzma:lzma:0.0.1 +--- java3d:vecmath:1.5.2 +--- net.sf.trove4j:trove4j:3.0.3 +--- org.apache.maven:maven-artifact:3.5.3 | +--- org.codehaus.plexus:plexus-utils:3.1.0 | \--- org.apache.commons:commons-lang3:3.5 +--- net.sf.jopt-simple:jopt-simple:5.0.3 -> 5.0.4 +--- org.apache.logging.log4j:log4j-api:2.15.0 +--- org.apache.logging.log4j:log4j-core:2.15.0 (*) \--- net.minecraftforge:legacydev:0.2.3.+ -> 0.2.3.1 testRuntimeOnly - Runtime only dependencies for source set 'test'. (n) No dependencies (*) - dependencies omitted (listed previously) A web-based, searchable dependency report is available by adding the --scan option. BUILD SUCCESSFUL in 8s 1 actionable task: 1 executed
最新发布
12-07
<think>我们正在解决Gradle运行`:runClient`任务失败,错误为Java进程返回非零退出值-1的问题。同时,用户提到了构建日志中出现的提示信息:"To honour the JVM settings for this build a new JVM will be forked"。我们将结合引用内容和之前的分析,提供解决方案。 ### 问题分析 1. **退出值-1**:通常表示进程异常终止,可能原因包括: - 内存不足(OOM)导致JVM崩溃 - 本地库加载失败(如显卡驱动问题) - JVM本身崩溃(JDK安装损坏) - 资源文件损坏(如纹理、声音文件) 2. **构建日志提示**:"To honour the JVM settings for this build a new JVM will be forked" - 这是一个正常提示,表示Gradle将为构建启动一个新的JVM进程以使用指定的JVM参数,无需特别处理。 ### 解决方案 #### 步骤1: 确认JDK版本兼容性 [引用1,2,4] - 在IDE中检查Gradle使用的JDK版本(例如IntelliJ): - 路径:`Preferences > Build, Execution, Deployment > Build Tools > Gradle > Gradle JDK` - 确保选择的JDK版本与项目要求一致(如Minecraft 1.12.2需Java 8,现代版本需Java 17) - **注意**:如果项目要求Java 17,而当前设置为Java 8,则必须切换至Java 17[^1][^2]。 #### 步骤2: 增加JVM内存 [引用3] - 在项目根目录的`gradle.properties`文件中添加内存配置: ```properties # 设置最大堆内存为2GB(根据机器配置调整) org.gradle.jvmargs=-Xmx2G ``` 如果问题依然存在,尝试进一步增加(如`-Xmx4G`)或添加更多参数: ```properties org.gradle.jvmargs=-Xmx4G -XX:MaxMetaspaceSize=1G -XX:+CrashOnOutOfMemoryError ``` - **注意**:内存不足是导致退出值-1的常见原因[^3]。 #### 步骤3: 清理构建缓存 - 在终端执行以下命令: ```bash ./gradlew clean --stop # 停止所有Gradle守护进程 ./gradlew clean runClient # 清理并重新运行 ``` #### 步骤4: 检查资源文件 - 如果错误日志提及资源加载失败(如纹理、声音): - 检查`src/main/resources`目录,移除或修复损坏的文件(尤其是非标准格式的图片/音频) - 注意文件名大小写(Windows不敏感,但Gradle构建后可能在Linux环境运行) #### 步骤5: 捕获详细错误日志 - 运行以下命令获取完整错误信息: ```bash ./gradlew runClient --stacktrace --debug ``` - 关键排查点: - 日志末尾的`Caused by`部分 - 搜索`OutOfMemoryError`或`EXCEPTION_ACCESS_VIOLATION`(指示内存或本地库问题) - 资源加载错误(如`Failed to load texture`) #### 步骤6: 处理依赖冲突 - 生成依赖树报告: ```bash ./gradlew :dependencies > deps.txt ``` - 检查是否有多个版本的同一库(如`guava`),在`build.gradle`中强制指定版本: ```groovy configurations.all { resolutionStrategy.force 'com.google.guava:guava:32.1.2-jre' } ``` #### 步骤7: 重装/修复JDK - 如果怀疑JDK损坏: 1. 完全卸载当前JDK(包括环境变量) 2. 从[Oracle官网](https://www.oracle.com/java/technologies/downloads/)下载新JDK 3. **将JDK和JRE安装到独立目录**(如`D:\Java\jdk1.8.0_xxx`和`D:\Java\jre1.8.0_xxx`)[^4] 4. 设置`JAVA_HOME=D:\Java\jdk1.8.0_xxx`,并将`%JAVA_HOME%\bin`加入`PATH` ### 关于守护进程提示的解释 > "To honour the JVM settings for this build a new JVM will be forked" - **含义**:Gradle默认重用守护进程加速构建,但如果构建需要特定的JVM参数(如内存设置),则会创建新的守护进程实例。 - **处理**:此提示仅为信息性消息,**无需操作**。如果频繁出现导致性能下降,可减少`gradle.properties`中JVM参数的变更频率。 ### 总结流程图 ```mermaid graph TD A[运行 runClient 失败] --> B{检查日志} B -->|内存不足| C[增加 -Xmx 参数] B -->|资源错误| D[清理/修复资源文件] B -->|依赖冲突| E[统一依赖版本] B -->|JDK问题| F[重装JDK] C --> G[重新构建] D --> G E --> G F --> G G --> H[成功] ``` > **重要提示**:退出值`-1`在Windows中通常对应`0xC0000005`(访问冲突),可能由以下原因引起: > - 过时的显卡驱动(更新驱动) > - 损坏的OpenAL库(安装[OpenAL](https://www.openal.org/downloads/)) > - 杀毒软件拦截(临时禁用测试) §§相关问题§§ 1. 如何更新显卡驱动以解决Java应用崩溃问题? 2. 如何在Gradle中强制指定依赖项版本? 3. 如何诊断和修复Java本地库(Native Library)加载失败? </think> ### 解决 Gradle `:runClient` 任务失败(非零退出值 -1)的完整方案 #### 1. **修正 JDK 版本兼容性问题** [^1][^2][^4] - **检查 Gradle 使用的 JVM**: 1. 在 IDE 中打开设置: `Preferences > Build, Execution, Deployment > Build Tools > Gradle` 2. 修改 `Gradle JVM` 为项目要求的版本(如 Java 8 或 17) ```mermaid graph LR A[Gradle任务失败] --> B{检查Gradle JVM设置} B -->|不匹配| C[切换为项目所需JDK] B -->|已匹配| D[检查其他原因] ``` 3. **验证版本一致性**: ```bash # 终端执行 ./gradlew --version | grep "JVM" java -version ``` - **解决方案选择**: | **选项** | **优点** | **风险** | 适用场景 | |----------|----------|----------|----------| | 切换为 Java 8 | 稳定,兼容旧项目 | 不支持新特性 | Minecraft 1.12 等旧项目 | | 升级到 Java 17 | 支持新特性 | 可能需修改代码 | 现代项目 | | 升级 Gradle 版本 | 保持 Java 21 | 需测试兼容性 | 新项目开发 | #### 2. **处理 JVM 分叉提示的含义与配置** - **提示解析**: `To honour the JVM settings for this build a new JVM will be forked` 表示 Gradle 将创建独立的 JVM 进程来运行任务,以遵守 `gradle.properties` 中的内存设置。 - **优化配置**(`gradle.properties`): ```properties # 增加堆内存并启用OOM崩溃日志 org.gradle.jvmargs=-Xmx2048m -XX:MaxMetaspaceSize=512m -XX:+HeapDumpOnOutOfMemoryError # 禁用并行构建(排查问题用) org.gradle.parallel=false ``` > **注意**:内存值根据物理内存调整(建议不超过物理内存的 70%) #### 3. **解决退出值 -1 的常见原因** 1. **内存不足(OOM)** [^3][^5] - 症状:日志中包含 `OutOfMemoryError` - 修复: ```properties # 在 build.gradle 中为特定任务增加内存 tasks.named('runClient') { jvmArgs '-Xmx3G', '-XX:+CrashOnOutOfMemoryError' } ``` 2. **资源文件损坏**(常见于游戏开发) - 检查 `src/main/resources` 目录: - 删除非标准格式的图片/音频文件 - 验证文件名大小写一致性 - 清理缓存: ```bash ./gradlew clean --stop # 停止守护进程 ./gradlew clean runClient # 完整重建 ``` 3. **JDK 安装损坏** [^4] - 重装步骤: 1. 完全卸载现有 JDK(删除注册表项) 2. 新建独立目录:`D:\Java\jdk1.8.0_xxx` 和 `D:\Java\jre1.8.0_xxx` 3. 安装时将 JDK 和 JRE 分别放入不同目录 4. 设置环境变量: ```env JAVA_HOME=D:\Java\jdk1.8.0_xxx PATH=%JAVA_HOME%\bin;... ``` #### 4. **诊断工具与命令** - **获取详细错误日志**: ```bash # 带堆栈跟踪和调试日志 ./gradlew runClient --stacktrace --debug # 检查JVM崩溃日志(位置提示) grep -r "hs_err_pid" ~/.gradle/daemon ``` - **依赖冲突检查**: ```bash # 生成依赖树报告 ./gradlew :dependencies > deps.txt ``` 重点检查: ```diff +--- com.google.guava:guava:30.1.1-jre ---- com.google.guava:guava:25.1-jre (冲突) ``` #### 5. **典型问题解决流程 ```mermaid graph TD A[失败:exit code -1] --> B{日志分析} B -->|内存不足| C[增加-Xmx参数] B -->|资源加载失败| D[清理resources目录] B -->|JDK问题| E[重装JDK] B -->|依赖冲突| F[统一依赖版本] C --> G[重新运行] D --> G E --> G F --> G G --> H[成功] ``` > **关键提示**:退出值 `-1` 在 Windows 中通常对应 `0xC0000005` (访问冲突),可能由以下原因引起: > 1. 显卡驱动过时(更新 NVIDIA/AMD 驱动) > 2. OpenAL 库损坏(安装 [OpenAL 运行时](https://www.openal.org/downloads/)) > 3. 杀毒软件拦截(暂时禁用测试)
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值