Jump to content

[1.10.2] FML crash "Bad local variable type" [UNSOLVABLE / CAUSED BY ORACLE]


JaredBGreat

Recommended Posts

OK, I'm not sure what I could have possibly done, or if its an FML bug or even a Java bug, or if this would happen once I update, but I've never seen this before, and don't even really know what it means.  This time my code is not preducing unexpected behavior, the part it doesn't like isn't even running as far as I can tell.  Instead the game crashes

on trying to load one of my classes.  This class isn't even directly modding the game, its for reading advanced configurations, and as far as I can tell the Java code is fine.

 

Does anyone know what is going on or what this error even means?

 

The class its trying to load is this:

 

package jaredbgreat.climaticbiome.config;

import jaredbgreat.climaticbiome.generation.chunk.biomes.IBiomeSpecifier;
import jaredbgreat.climaticbiome.generation.chunk.biomes.generic.BiomeTable;
import jaredbgreat.climaticbiome.generation.chunk.biomes.generic.GetIslandBiome;
import jaredbgreat.climaticbiome.generation.chunk.biomes.generic.GetLeafBiome;
import jaredbgreat.climaticbiome.generation.chunk.biomes.generic.GetListedBiome;
import jaredbgreat.climaticbiome.generation.chunk.biomes.generic.GetNoiseBiome;
import jaredbgreat.climaticbiome.generation.chunk.biomes.generic.GetSingleBiome;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.StringTokenizer;

public class BiomeConfigurator {
	File file;
	private static final String delim = " ,\t";
	private boolean inBlock;
	HashMap<String, IBiomeSpecifier>   specifiers;
	HashMap<String, AbstractTempBiome> temps;
	ArrayList<String> identifiers;
	
	
	BiomeConfigurator(File file) {
		if(!file.exists() || !file.canRead() || !file.isFile()) {
			System.err.println("ERROR: The file " + file + " could not be read!");
			return;
		}
		this.file = file;
		specifiers  = new HashMap<>();
		temps       = new HashMap<>();
		identifiers = new ArrayList();
	}
	
	
	public void process() {		
		try {
			readFile(file);
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
		for(String name : identifiers) {
			temps.get(name).setupSpecifier(name);
		}		
	}
	
	
	/**
	 * This will read and parse a file into IBiomeSpecifiers.
	 * 
	 * This includes recognition of comments, blocks, and the 
	 * ability to import additional files.
	 * 
	 * @param file
	 * @throws FileNotFoundException
	 * @throws IOException
	 */
	private void readFile(File file) throws FileNotFoundException, IOException {
		BufferedReader reader = new BufferedReader(new FileReader(file));
		StringTokenizer tokens = null;
		AbstractTempBiome specifier;
		inBlock = false;
		String line, token1, token3;
		while((line = reader.readLine()) != null) {
			if(line.startsWith("#")) {
				continue;
			}
			tokens = new StringTokenizer(line, delim);
			token1 = tokens.nextToken();
			if(token1.toLowerCase().equals("import")) {
				readFile(new File(tokens.nextToken()));
			} else {
				specifier = addSpecifier(token1, tokens.nextToken());
				if((token3 = tokens.nextToken()).equals("{")) {
					readData(reader, tokens, specifier);
				} else {
					specifier.addString(token3);
				}
			}
			
		}			
	}
	
	
	/**
	 * Read data for a a specific IBiomeSpecifier (or more accurately,
	 * for its temporary stand-in, an AbstractTempBiome) from a block 
	 * of data.  Such blocks are delimited with curly braces.
	 * 
	 * @param reader
	 * @param tokens
	 * @param specifier
	 * @throws IOException
	 */
	private void readData(BufferedReader reader, StringTokenizer tokens, 
				AbstractTempBiome specifier) throws IOException {
		if(readDataLine(tokens, specifier)) {
			return;
		}
		String line;
		while((line = reader.readLine()) != null) {
			if(line.startsWith("#")) {
				continue;
			}
			tokens = new StringTokenizer(line, delim);
			if(readDataLine(tokens, specifier)) {
				return;
			}
		}
	}
	
	
	/**
	 * Reads one line of data for a specific IBiomeSpecifier (or more 
	 * accurately, for its temporary stand-in, an AbstractTempBiome).
	 * 
	 * Returns true if the end of the block was reached, otherwise 
	 * returns false.
	 * 
	 * @param tokens
	 * @param specifier
	 * @return
	 */
	private boolean readDataLine(StringTokenizer tokens, 
				AbstractTempBiome specifier) {
		String token;
		while(tokens.hasMoreTokens()) {
			token = tokens.nextToken();
			if(token.equals("}")) {
				return true;
			} else if(token.endsWith("}")) {
				// This should not be done, but someone is bound to do it
				token = token.substring(0, token.length() - 1);
				if(token.toLowerCase().equals("null")) {
					specifier.addString(null);
				} else {
					specifier.addString(token);
				}
				specifier.addString(token);
				return true;
			} else {
				if(token.toLowerCase().equals("null")) {
					specifier.addString(null);
				} else {
					specifier.addString(token);
				}
			}
		}
		return false;
	}
	
	
	/**
	 * This will take a name and type and create an empty IBiomeSpecifier 
	 * and matching AbstractTempBiome to hold its initialization data 
	 * unitl all data is read.  It will also add the name of the new 
	 * biome specifier to the list of identifiers which are iterated 
	 * during the follow data setup phase. 
	 * 
	 * 
	 * @param type
	 * @param name
	 * @return
	 */
	private AbstractTempBiome addSpecifier(String type, String name) {
		AbstractTempBiome out = null;
		identifiers.add(name);
		if(type.toLowerCase().equals("island")) {
			specifiers.put(name, new GetIslandBiome());
			temps.put(name, out = new TempIslandBiome(this));
		} else if(type.toLowerCase().equals("leaf")) {
			specifiers.put(name, new GetLeafBiome());
			temps.put(name, out = new TempLeafBiome(this));
		} else if(type.toLowerCase().equals("list")) {
			specifiers.put(name, new GetListedBiome());
			temps.put(name, out = new TempListedBiome(this));
		} else if(type.toLowerCase().equals("noise")) {
			specifiers.put(name, new GetNoiseBiome());
			temps.put(name, out = new TempNoiseBiome(this));
		} else if(type.toLowerCase().equals("single")) {
			specifiers.put(name, new GetSingleBiome());
			temps.put(name, out = new TempSingleBiome(this));
		} else if(type.toLowerCase().equals("table")) {
			specifiers.put(name, new BiomeTable());
			temps.put(name, out = new TempBiomeTable(this));
		} 
		return out;
	}
	

}

 

And when I start the game I get this crash report:

 

Java HotSpot(TM) 64-Bit Server VM warning: Using incremental CMS is deprecated and will likely be removed in a future release
[05:59:52] [main/INFO] [GradleStart]: Extra: []
[05:59:52] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --assetsDir, /home/jared/.gradle/caches/minecraft/assets, --assetIndex, 1.10, --accessToken{REDACTED}, --version, 1.10.2, --tweakClass, net.minecraftforge.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
[05:59:52] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.fml.common.launcher.FMLTweaker
[05:59:52] [main/INFO] [LaunchWrapper]: Using primary tweak class name net.minecraftforge.fml.common.launcher.FMLTweaker
[05:59:52] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
[05:59:52] [main/INFO] [LaunchWrapper]: Calling tweak class net.minecraftforge.fml.common.launcher.FMLTweaker
[05:59:52] [main/INFO] [FML]: Forge Mod Loader version 12.18.3.2185 for Minecraft 1.10.2 loading
[05:59:52] [main/INFO] [FML]: Java is Java HotSpot(TM) 64-Bit Server VM, version 1.8.0_161, running on Linux:amd64:3.13.0-139-generic, installed at /usr/lib/jvm/java-8-oracle/jre
[05:59:52] [main/INFO] [FML]: Managed to load a deobfuscated Minecraft name- we are in a deobfuscated environment. Skipping runtime deobfuscation
[05:59:52] [main/INFO] [LaunchWrapper]: Calling tweak class net.minecraftforge.gradle.tweakers.CoremodTweaker
[05:59:52] [main/INFO] [GradleStart]: Injecting location in coremod net.minecraftforge.fml.relauncher.FMLCorePlugin
[05:59:52] [main/INFO] [GradleStart]: Injecting location in coremod net.minecraftforge.classloading.FMLForgePlugin
[05:59:52] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.fml.common.launcher.FMLInjectionAndSortingTweaker
[05:59:52] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.fml.common.launcher.FMLDeobfTweaker
[05:59:52] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.AccessTransformerTweaker
[05:59:52] [main/INFO] [LaunchWrapper]: Calling tweak class net.minecraftforge.fml.common.launcher.FMLInjectionAndSortingTweaker
[05:59:52] [main/INFO] [LaunchWrapper]: Calling tweak class net.minecraftforge.fml.common.launcher.FMLInjectionAndSortingTweaker
[05:59:52] [main/INFO] [LaunchWrapper]: Calling tweak class net.minecraftforge.fml.relauncher.CoreModManager$FMLPluginWrapper
[05:59:52] [main/ERROR] [FML]: The binary patch set is missing. Either you are in a development environment, or things are not going to work!
[05:59:52] [main/ERROR] [FML]: FML appears to be missing any signature data. This is not a good thing
[05:59:52] [main/INFO] [LaunchWrapper]: Calling tweak class net.minecraftforge.fml.relauncher.CoreModManager$FMLPluginWrapper
[05:59:52] [main/INFO] [LaunchWrapper]: Calling tweak class net.minecraftforge.fml.common.launcher.FMLDeobfTweaker
[05:59:53] [main/INFO] [LaunchWrapper]: Calling tweak class net.minecraftforge.gradle.tweakers.AccessTransformerTweaker
[05:59:53] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.fml.common.launcher.TerminalTweaker
[05:59:53] [main/INFO] [LaunchWrapper]: Calling tweak class net.minecraftforge.fml.common.launcher.TerminalTweaker
[05:59:53] [main/INFO] [LaunchWrapper]: Launching wrapped minecraft {net.minecraft.client.main.Main}
[05:59:53] [Client thread/INFO]: Setting user: Player608
[05:59:56] [Client thread/WARN]: Skipping bad option: lastServer:
[05:59:56] [Client thread/INFO]: LWJGL Version: 2.9.4
[05:59:56] [Client thread/INFO] [STDOUT]: [net.minecraftforge.fml.client.SplashProgress:start:221]: ---- Minecraft Crash Report ----
// This doesn't make any sense!

Time: 06/02/18 5:59 AM
Description: Loading screen debug info

This is just a prompt for computer specs to be printed. THIS IS NOT A ERROR


A detailed walkthrough of the error, its code path and all known details is as follows:
---------------------------------------------------------------------------------------

-- System Details --
Details:
	Minecraft Version: 1.10.2
	Operating System: Linux (amd64) version 3.13.0-139-generic
	Java Version: 1.8.0_161, Oracle Corporation
	Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation
	Memory: 770290416 bytes (734 MB) / 1037959168 bytes (989 MB) up to 1037959168 bytes (989 MB)
	JVM Flags: 3 total; -Xincgc -Xmx1024M -Xms1024M
	IntCache: cache: 0, tcache: 0, allocated: 0, tallocated: 0
	FML: 
	Loaded coremods (and transformers): 
	GL info: ' Vendor: 'Intel Open Source Technology Center' Version: '3.0 Mesa 10.1.3' Renderer: 'Mesa DRI Intel(R) Ivybridge Desktop '
[05:59:56] [Client thread/INFO] [FML]: MinecraftForge v12.18.3.2185 Initialized
[05:59:56] [Client thread/INFO] [FML]: Replaced 231 ore recipes
[05:59:56] [Client thread/INFO] [FML]: Found 0 mods from the command line. Injecting into mod discoverer
[05:59:56] [Client thread/INFO] [FML]: Searching /home/jared/Documents/src/eclipse/Forge-1.10/ClimaticBiomes/run/mods for mods
[05:59:58] [Client thread/INFO] [FML]: Forge Mod Loader has identified 4 mods to load
[05:59:58] [Client thread/INFO] [FML]: Attempting connection with missing mods [mcp, FML, Forge, climaticbiomesjbg] at CLIENT
[05:59:58] [Client thread/INFO] [FML]: Attempting connection with missing mods [mcp, FML, Forge, climaticbiomesjbg] at SERVER
[05:59:58] [Client thread/INFO]: Reloading ResourceManager: Default, FMLFileResourcePack:Forge Mod Loader, FMLFileResourcePack:Minecraft Forge, FMLFileResourcePack:Climatic Biome Placement
[05:59:58] [Client thread/INFO] [FML]: Processing ObjectHolder annotations
[05:59:58] [Client thread/INFO] [FML]: Found 423 ObjectHolder annotations
[05:59:58] [Client thread/INFO] [FML]: Identifying ItemStackHolder annotations
[05:59:58] [Client thread/INFO] [FML]: Found 0 ItemStackHolder annotations
[05:59:58] [Client thread/INFO] [STDOUT]: [jaredbgreat.climaticbiome.blocks.ModBlocks:registerBlock:36]: Registered block : tile.pine_log
[05:59:58] [Client thread/INFO] [STDOUT]: [jaredbgreat.climaticbiome.blocks.ModBlocks:registerBlock:36]: Registered block : tile.pine_planks
[05:59:58] [Client thread/INFO] [STDOUT]: [jaredbgreat.climaticbiome.blocks.ModBlocks:registerBlock:36]: Registered block : tile.pine_leaves
[05:59:58] [Client thread/INFO] [STDOUT]: [jaredbgreat.climaticbiome.blocks.ModBlocks:registerBlock:36]: Registered block : tile.pine_sapling
[05:59:58] [Client thread/INFO] [FML]: Applying holder lookups
[05:59:58] [Client thread/INFO] [FML]: Holder lookups applied
[05:59:58] [Client thread/INFO] [FML]: Applying holder lookups
[05:59:58] [Client thread/INFO] [FML]: Holder lookups applied
[05:59:58] [Client thread/INFO] [FML]: Applying holder lookups
[05:59:58] [Client thread/INFO] [FML]: Holder lookups applied
[05:59:58] [Client thread/INFO] [FML]: Configured a dormant chunk cache size of 0
[05:59:58] [Forge Version Check/INFO] [ForgeVersionCheck]: [Forge] Starting version check at http://files.minecraftforge.net/maven/net/minecraftforge/forge/promotions_slim.json
[05:59:58] [Client thread/INFO] [FML]: Applying holder lookups
[05:59:58] [Client thread/INFO] [FML]: Holder lookups applied
[05:59:58] [Client thread/INFO] [FML]: Injecting itemstacks
[05:59:58] [Client thread/INFO] [FML]: Itemstack injection complete
[05:59:59] [Forge Version Check/INFO] [ForgeVersionCheck]: [Forge] Found status: UP_TO_DATE Target: null
[05:59:59] [Sound Library Loader/INFO]: Starting up SoundSystem...
[05:59:59] [Thread-7/INFO]: Initializing LWJGL OpenAL
[05:59:59] [Thread-7/INFO]: (The LWJGL binding of OpenAL.  For more information, see http://www.lwjgl.org)
[05:59:59] [Thread-7/INFO]: OpenAL initialized.
[06:00:00] [Sound Library Loader/INFO]: Sound engine started
[06:00:01] [Client thread/INFO] [FML]: Max texture size: 8192
[06:00:01] [Client thread/INFO]: Created: 16x16 textures-atlas
[06:00:02] [Client thread/INFO] [FML]: Injecting itemstacks
[06:00:02] [Client thread/INFO] [FML]: Itemstack injection complete
[06:00:02] [Client thread/ERROR] [FML]: Fatal errors were detected during the transition from POSTINITIALIZATION to AVAILABLE. Loading cannot continue
[06:00:02] [Client thread/ERROR] [FML]: 
	States: 'U' = Unloaded 'L' = Loaded 'C' = Constructed 'H' = Pre-initialized 'I' = Initialized 'J' = Post-initialized 'A' = Available 'D' = Disabled 'E' = Errored
	UCHIJ	mcp{9.19} [Minecraft Coder Pack] (minecraft.jar) 
	UCHIJ	FML{8.0.99.99} [Forge Mod Loader] (forgeSrc-1.10.2-12.18.3.2185.jar) 
	UCHIJ	Forge{12.18.3.2185} [Minecraft Forge] (forgeSrc-1.10.2-12.18.3.2185.jar) 
	UCHIE	climaticbiomesjbg{0.9.0} [Climatic Biome Placement] (bin) 
[06:00:02] [Client thread/ERROR] [FML]: The following problems were captured during this phase
[06:00:02] [Client thread/ERROR] [FML]: Caught exception from Climatic Biome Placement (climaticbiomesjbg)
java.lang.VerifyError: Bad local variable type
Exception Details:
  Location:
    jaredbgreat/climaticbiome/config/BiomeConfigurator.readFile(Ljava/io/File;)V @26: aload
  Reason:
    Type top (current frame, locals[4]) is not assignable to reference type
  Current Frame:
    bci: @26
    flags: { }
    locals: { 'jaredbgreat/climaticbiome/config/BiomeConfigurator', 'java/io/File', 'java/io/BufferedReader', 'java/util/StringTokenizer', top, 'java/lang/String' }
    stack: { }
  Bytecode:
    0x0000000: bb00 8059 bb00 8259 2bb7 0084 b700 874d
    0x0000010: 014e 2a03 b500 89a7 006e 1904 128d b600
    0x0000020: 9199 0006 a700 61bb 008b 5919 0412 0bb7
    0x0000030: 0094 4e2d b600 973a 0519 05b6 009a 129c
    0x0000040: b600 a099 0015 2abb 001c 592d b600 97b7
    0x0000050: 00a1 b700 5da7 0030 2a19 052d b600 97b7
    0x0000060: 00a5 3a06 2db6 0097 593a 0712 a7b6 00a0
    0x0000070: 9900 0e2a 2c2d 1906 b700 aba7 000a 1906
    0x0000080: 1907 b600 ae2c b600 b159 3a04 c7ff 8eb1
    0x0000090:                                        
  Stackmap Table:
    full_frame(@26,{Object[#2],Object[#28],Object[#128],Object[#139],Top,Object[#109]},{})
    full_frame(@39,{Object[#2],Object[#28],Object[#128],Object[#139],Object[#109]},{})
    append_frame(@88,Object[#109])
    append_frame(@126,Object[#115],Object[#109])
    full_frame(@133,{Object[#2],Object[#28],Object[#128],Object[#139]},{})

	at jaredbgreat.climaticbiome.config.ConfigHandler.findCustomBiomes(ConfigHandler.java:104) ~[bin/:?]
	at jaredbgreat.climaticbiome.ClimaticBiomePlacement.postInit(ClimaticBiomePlacement.java:63) ~[bin/:?]
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_161]
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_161]
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_161]
	at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_161]
	at net.minecraftforge.fml.common.FMLModContainer.handleModStateEvent(FMLModContainer.java:602) ~[forgeSrc-1.10.2-12.18.3.2185.jar:?]
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_161]
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_161]
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_161]
	at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_161]
	at com.google.common.eventbus.EventSubscriber.handleEvent(EventSubscriber.java:74) ~[guava-17.0.jar:?]
	at com.google.common.eventbus.SynchronizedEventSubscriber.handleEvent(SynchronizedEventSubscriber.java:47) ~[guava-17.0.jar:?]
	at com.google.common.eventbus.EventBus.dispatch(EventBus.java:322) ~[guava-17.0.jar:?]
	at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:304) ~[guava-17.0.jar:?]
	at com.google.common.eventbus.EventBus.post(EventBus.java:275) ~[guava-17.0.jar:?]
	at net.minecraftforge.fml.common.LoadController.sendEventToModContainer(LoadController.java:243) ~[forgeSrc-1.10.2-12.18.3.2185.jar:?]
	at net.minecraftforge.fml.common.LoadController.propogateStateMessage(LoadController.java:221) ~[forgeSrc-1.10.2-12.18.3.2185.jar:?]
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_161]
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_161]
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_161]
	at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_161]
	at com.google.common.eventbus.EventSubscriber.handleEvent(EventSubscriber.java:74) ~[guava-17.0.jar:?]
	at com.google.common.eventbus.SynchronizedEventSubscriber.handleEvent(SynchronizedEventSubscriber.java:47) ~[guava-17.0.jar:?]
	at com.google.common.eventbus.EventBus.dispatch(EventBus.java:322) ~[guava-17.0.jar:?]
	at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:304) ~[guava-17.0.jar:?]
	at com.google.common.eventbus.EventBus.post(EventBus.java:275) ~[guava-17.0.jar:?]
	at net.minecraftforge.fml.common.LoadController.distributeStateMessage(LoadController.java:145) [LoadController.class:?]
	at net.minecraftforge.fml.common.Loader.initializeMods(Loader.java:800) [Loader.class:?]
	at net.minecraftforge.fml.client.FMLClientHandler.finishMinecraftLoading(FMLClientHandler.java:324) [FMLClientHandler.class:?]
	at net.minecraft.client.Minecraft.startGame(Minecraft.java:561) [Minecraft.class:?]
	at net.minecraft.client.Minecraft.run(Minecraft.java:386) [Minecraft.class:?]
	at net.minecraft.client.main.Main.main(Main.java:118) [Main.class:?]
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_161]
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_161]
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_161]
	at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_161]
	at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) [launchwrapper-1.12.jar:?]
	at net.minecraft.launchwrapper.Launch.main(Launch.java:28) [launchwrapper-1.12.jar:?]
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_161]
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_161]
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_161]
	at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_161]
	at net.minecraftforge.gradle.GradleStartCommon.launch(GradleStartCommon.java:97) [start/:?]
	at GradleStart.main(GradleStart.java:26) [start/:?]
[06:00:02] [Client thread/INFO] [STDOUT]: [net.minecraft.init.Bootstrap:printToSYSOUT:649]: ---- Minecraft Crash Report ----
// There are four lights!

Time: 06/02/18 6:00 AM
Description: There was a severe problem during mod loading that has caused the game to fail

net.minecraftforge.fml.common.LoaderExceptionModCrash: Caught exception from Climatic Biome Placement (climaticbiomesjbg)
Caused by: java.lang.VerifyError: Bad local variable type
Exception Details:
  Location:
    jaredbgreat/climaticbiome/config/BiomeConfigurator.readFile(Ljava/io/File;)V @26: aload
  Reason:
    Type top (current frame, locals[4]) is not assignable to reference type
  Current Frame:
    bci: @26
    flags: { }
    locals: { 'jaredbgreat/climaticbiome/config/BiomeConfigurator', 'java/io/File', 'java/io/BufferedReader', 'java/util/StringTokenizer', top, 'java/lang/String' }
    stack: { }
  Bytecode:
    0x0000000: bb00 8059 bb00 8259 2bb7 0084 b700 874d
    0x0000010: 014e 2a03 b500 89a7 006e 1904 128d b600
    0x0000020: 9199 0006 a700 61bb 008b 5919 0412 0bb7
    0x0000030: 0094 4e2d b600 973a 0519 05b6 009a 129c
    0x0000040: b600 a099 0015 2abb 001c 592d b600 97b7
    0x0000050: 00a1 b700 5da7 0030 2a19 052d b600 97b7
    0x0000060: 00a5 3a06 2db6 0097 593a 0712 a7b6 00a0
    0x0000070: 9900 0e2a 2c2d 1906 b700 aba7 000a 1906
    0x0000080: 1907 b600 ae2c b600 b159 3a04 c7ff 8eb1
    0x0000090:                                        
  Stackmap Table:
    full_frame(@26,{Object[#2],Object[#28],Object[#128],Object[#139],Top,Object[#109]},{})
    full_frame(@39,{Object[#2],Object[#28],Object[#128],Object[#139],Object[#109]},{})
    append_frame(@88,Object[#109])
    append_frame(@126,Object[#115],Object[#109])
    full_frame(@133,{Object[#2],Object[#28],Object[#128],Object[#139]},{})

	at jaredbgreat.climaticbiome.config.ConfigHandler.findCustomBiomes(ConfigHandler.java:104)
	at jaredbgreat.climaticbiome.ClimaticBiomePlacement.postInit(ClimaticBiomePlacement.java:63)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at net.minecraftforge.fml.common.FMLModContainer.handleModStateEvent(FMLModContainer.java:602)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at com.google.common.eventbus.EventSubscriber.handleEvent(EventSubscriber.java:74)
	at com.google.common.eventbus.SynchronizedEventSubscriber.handleEvent(SynchronizedEventSubscriber.java:47)
	at com.google.common.eventbus.EventBus.dispatch(EventBus.java:322)
	at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:304)
	at com.google.common.eventbus.EventBus.post(EventBus.java:275)
	at net.minecraftforge.fml.common.LoadController.sendEventToModContainer(LoadController.java:243)
	at net.minecraftforge.fml.common.LoadController.propogateStateMessage(LoadController.java:221)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at com.google.common.eventbus.EventSubscriber.handleEvent(EventSubscriber.java:74)
	at com.google.common.eventbus.SynchronizedEventSubscriber.handleEvent(SynchronizedEventSubscriber.java:47)
	at com.google.common.eventbus.EventBus.dispatch(EventBus.java:322)
	at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:304)
	at com.google.common.eventbus.EventBus.post(EventBus.java:275)
	at net.minecraftforge.fml.common.LoadController.distributeStateMessage(LoadController.java:145)
	at net.minecraftforge.fml.common.Loader.initializeMods(Loader.java:800)
	at net.minecraftforge.fml.client.FMLClientHandler.finishMinecraftLoading(FMLClientHandler.java:324)
	at net.minecraft.client.Minecraft.startGame(Minecraft.java:561)
	at net.minecraft.client.Minecraft.run(Minecraft.java:386)
	at net.minecraft.client.main.Main.main(Main.java:118)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at net.minecraft.launchwrapper.Launch.launch(Launch.java:135)
	at net.minecraft.launchwrapper.Launch.main(Launch.java:28)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at net.minecraftforge.gradle.GradleStartCommon.launch(GradleStartCommon.java:97)
	at GradleStart.main(GradleStart.java:26)


A detailed walkthrough of the error, its code path and all known details is as follows:
---------------------------------------------------------------------------------------

-- System Details --
Details:
	Minecraft Version: 1.10.2
	Operating System: Linux (amd64) version 3.13.0-139-generic
	Java Version: 1.8.0_161, Oracle Corporation
	Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation
	Memory: 562020024 bytes (535 MB) / 1037959168 bytes (989 MB) up to 1037959168 bytes (989 MB)
	JVM Flags: 3 total; -Xincgc -Xmx1024M -Xms1024M
	IntCache: cache: 0, tcache: 0, allocated: 0, tallocated: 0
	FML: MCP 9.32 Powered by Forge 12.18.3.2185 4 mods loaded, 4 mods active
	States: 'U' = Unloaded 'L' = Loaded 'C' = Constructed 'H' = Pre-initialized 'I' = Initialized 'J' = Post-initialized 'A' = Available 'D' = Disabled 'E' = Errored
	UCHIJ	mcp{9.19} [Minecraft Coder Pack] (minecraft.jar) 
	UCHIJ	FML{8.0.99.99} [Forge Mod Loader] (forgeSrc-1.10.2-12.18.3.2185.jar) 
	UCHIJ	Forge{12.18.3.2185} [Minecraft Forge] (forgeSrc-1.10.2-12.18.3.2185.jar) 
	UCHIE	climaticbiomesjbg{0.9.0} [Climatic Biome Placement] (bin) 
	Loaded coremods (and transformers): 
	GL info: ' Vendor: 'Intel Open Source Technology Center' Version: '3.0 Mesa 10.1.3' Renderer: 'Mesa DRI Intel(R) Ivybridge Desktop '
[06:00:02] [Client thread/INFO] [STDOUT]: [net.minecraft.init.Bootstrap:printToSYSOUT:649]: #@!@# Game crashed! Crash report saved to: #@!@# /home/jared/Documents/src/eclipse/Forge-1.10/ClimaticBiomes/run/./crash-reports/crash-2018-02-06_06.00.02-client.txt
AL lib: (EE) alc_cleanup: 1 device not closed

 

Does anyone at least know what is happening -- it looks like the classloader doesn't like my class and or fml is not handling it right -- I'm pretty sure of that.  But I have no idea why or how that would happen.

 

Edited by JaredBGreat

Developer of Doomlike Dungeons.

Link to comment
Share on other sites

8 minutes ago, JaredBGreat said:

at jaredbgreat.climaticbiome.config.ConfigHandler.findCustomBiomes(ConfigHandler.java:104) at jaredbgreat.climaticbiome.ClimaticBiomePlacement.postInit(ClimaticBiomePlacement.java:63)

You should post your code to a github repository, and then link to it here so we can see all potentially relevant code. :)

  • Like 1
Link to comment
Share on other sites

The full code is here:

https://github.com/BlackJar72/ClimaticBiomePlacement

 

What I'd think would be the most relevant parts are in these:

 

In ClimaticBiomePlacement (main mod class); comment this out and everything works:

    @EventHandler
    public void postInit(FMLPostInitializationEvent event) {    	
    	configHandler.findCustomBiomes();
    }

 

In jaredbgreat.climaticbiome.config.ConfigHander:

	public void findCustomBiomes() {
		File biomesFile = new File(dir.getPath() 
				+ File.separatorChar + Info.DIR + ".cfg");
		customBiomes = new BiomeConfigurator(biomesFile);
		customBiomes.process();
	}

 

I hate to always be asking for help, but I have no idea how to even begin debugging this.  I do know that Java often doesn't load classes until it needs them, and if I don't call the constructor for that class its fine (and the mod works on a hardcoded system).  I've never seen anything like this though, and have no idea what would cause that or where to begin fixing it.  As is I could release this as a small mod -- but I really was hoping I could make the who biome system configurable with biomes from other mods.

 

Anyway, thanks.

Developer of Doomlike Dungeons.

Link to comment
Share on other sites

8 hours ago, Ugdhar said:

Just for S&Gs, what if you make the constructor in your BiomeConfigurator class public? Does that change anything?

Didn't make a difference.  That much isn't surprising, as the package-protected constructor was being called from inside the same package.  But worth a try, I guess.

 

EDIT:  I've done some more research (thanks Google), and have uncovered evidence, such as this bug report that this is an actual bug in Java itself (apparently in both Java 7 and Java 8), and that it has something to do with the byte code format.  There are reports of this kind of thing in code written a various other context, such as LibGDX and in Kotlin.  I suppose I could completely re-write and see if I get luck -- it may very well be beyond this forums ability to help, unless someone just happens to know a trick to get around the bug or avoid triggering it.

 

EDIT2: I've researched this all day.  I've also tried refactoring and re-writing the code in various ways.  Nothing seems to help.  Java just doesn't like that class and that method.  I give up, I have other things to do and don't have time for this.  Thanks to everyone who has tried to help, but this will just be a small / minor mod with hard coded world-gen.

Edited by JaredBGreat

Developer of Doomlike Dungeons.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Announcements



×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.