Jump to content

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


Recommended Posts

Posted (edited)

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.

Posted
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
Posted

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.

Posted (edited)
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.

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



  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • Replace rubidium with embeddium: https://www.curseforge.com/minecraft/mc-mods/embeddium/files/5681725  
    • Hm, I have no idea I have no idea which program you use, but in the console, try grep -r "\${mod_id}" src/main/resources to find the usages of this key
    • Looking for a massive discount while shopping online? With the Temu coupon code $100 off, you can unlock incredible savings on your favorite products. The exclusive acu729640 Temu coupon code is here to offer maximum benefits to all shoppers across the USA, Canada, and European countries. Whether you're a first-time buyer or a returning customer, this Temu coupon $100 off and Temu 100 off coupon code is your golden ticket to unbeatable deals. What Is The Coupon Code For Temu $100 Off? The best part about our coupon is that it's valid for everyone! Whether you're new to Temu or an existing customer, you can enjoy amazing benefits using the Temu coupon $100 off and $100 off Temu coupon. acu729640 – Get a flat $100 off instantly on your next order. acu729640 – Enjoy a $100 coupon pack with multiple use opportunities. acu729640 – Avail a $100 flat discount for new customers on their first purchase. acu729640 – Existing users can apply this code to receive an extra $100 promo discount. acu729640 – Perfect for shoppers in the USA/Canada looking to save big with a $100 coupon. Temu Coupon Code $100 Off For New Users In 2025 New to Temu? You're in luck because the Temu coupon $100 off and Temu coupon code $100 off are offering unmatched deals just for you. acu729640 – Get a flat $100 discount as a welcome gift. acu729640 – Receive a $100 coupon bundle curated specifically for new users. acu729640 – Enjoy up to $100 coupon benefits for multiple purchases. acu729640 – Benefit from free shipping to over 68 countries. acu729640 – Score an extra 30% off on any purchase as a first-time user. How To Redeem The Temu Coupon $100 Off For New Customers? To activate the Temu $100 coupon and Temu $100 off coupon code for new users, follow these easy steps: Download the Temu app or visit their official website. Create your new account using a valid email address. Browse through the wide range of products and add your favorites to the cart. At checkout, enter the coupon code acu729640. The $100 discount will be instantly applied to your total. Temu Coupon $100 Off For Existing Customers Already a Temu customer? Great! The Temu $100 coupon codes for existing users and Temu coupon $100 off for existing customers free shipping are still valid for you. acu729640 – Redeem a $100 extra discount on any existing account. acu729640 – Unlock a $100 coupon bundle usable across multiple purchases. acu729640 – Get a free gift and enjoy express shipping across the USA and Canada. acu729640 – Save an extra 30% even on discounted products. acu729640 – Take advantage of free shipping to 68 global destinations. How To Use The Temu Coupon Code $100 Off For Existing Customers? To use the Temu coupon code $100 off and Temu coupon $100 off code, follow these steps: Open the Temu app or log in to your existing account on the website. Shop your favorite items and proceed to checkout. Input the code acu729640 in the promo code box. Confirm your order and see the $100 discount applied instantly. Latest Temu Coupon $100 Off First Order Make your first order count with our powerful promo code! The Temu coupon code $100 off first order, Temu coupon code first order, and Temu coupon code $100 off first time user offer unbeatable value. acu729640 – Flat $100 discount on your first order. acu729640 – Access to a $100 Temu coupon code as a first-time buyer. acu729640 – Enjoy up to $100 in coupons for repeated use. acu729640 – Get free global shipping to 68 countries. acu729640 – Bonus 30% off any product for new users. How To Find The Temu Coupon Code $100 Off? Looking for the Temu coupon $100 off or the Temu coupon $100 off Reddit discussions? Here's how you can find verified codes: Sign up for Temu’s newsletter to get access to exclusive and verified promo codes. Follow Temu on their social media pages like Instagram, Facebook, and Twitter for real-time updates on new discounts. Trusted coupon-sharing websites also provide the latest working Temu codes, including our very own acu729640. Is Temu $100 Off Coupon Legit? Worried whether this deal is real? Yes, the Temu $100 Off Coupon Legit and Temu 100 off coupon legit status is fully confirmed. Our Temu coupon code acu729640 is 100% legitimate, tested, and verified. It’s valid for both new and existing customers, worldwide, and does not have an expiration date. How Does Temu $100 Off Coupon Work? The Temu coupon code $100 off first-time user and Temu coupon codes 100 off provide direct value through instant cart discounts. When you apply the coupon code acu729640 at checkout, the system deducts $100 from your total. Whether you're a new user or a returning one, this code adjusts automatically based on your account type and shopping cart value. How To Earn Temu $100 Coupons As A New Customer? The best way to get the Temu coupon code $100 off and 100 off Temu coupon code is by signing up as a new customer on Temu. Once your account is created, use our promo code acu729640 to unlock a $100 coupon bundle, including a first-time order bonus, repeat usage coupons, and exclusive deals for new members. What Are The Advantages Of Using The Temu Coupon $100 Off? Here are the main benefits of using our Temu coupon code 100 off and Temu coupon code $100 off: $100 discount on your first order. $100 coupon bundle for multiple uses. 70% discount on popular items. Extra 30% off for existing Temu customers. Up to 90% off on selected products. Free gift for new users. Free delivery to 68 countries. Temu $100 Discount Code And Free Gift For New And Existing Customers The Temu $100 off coupon code and $100 off Temu coupon code also come with exclusive perks. acu729640 – Get $100 discount for your first order. acu729640 – Enjoy an additional 30% off on any item. acu729640 – Receive a free gift as a new Temu user. acu729640 – Unlock up to 70% discounts on your favorite items. acu729640 – Free gift with free shipping in 68 countries, including the USA and UK. Pros And Cons Of Using The Temu Coupon Code $100 Off This Month Here are the main Temu coupon $100 off code and Temu 100 off coupon pros and cons: Pros: Massive $100 discount on your first order. Works for both new and returning users. No minimum purchase requirement. Valid across 68 countries. Includes free shipping and extra discounts. Cons: Limited availability during high demand. Cannot be combined with some other special promo campaigns. Terms And Conditions Of Using The Temu Coupon $100 Off In 2025 Here are the Temu coupon code $100 off free shipping and latest Temu coupon code $100 off terms and conditions: Coupon code acu729640 is valid worldwide. No expiration date – use it anytime. No minimum purchase required. Available for both new and existing users. Free shipping is applicable to 68 countries. Final Note: Use The Latest Temu Coupon Code $100 Off We encourage you to use the Temu coupon code $100 off to make the most of your online shopping. Apply it today to enjoy the biggest discounts and rewards on Temu. The Temu coupon $100 off is your chance to enjoy premium deals with zero hassle. Don’t miss this verified offer that saves both time and money. FAQs Of Temu $100 Off Coupon What is the Temu $100 off coupon code? The Temu $100 off coupon code is acu729640, which gives users a flat $100 discount, free shipping, and other benefits on the Temu app and website. It works globally. Can existing users use the Temu $100 coupon? Yes, existing users can also use the acu729640 code to get a $100 discount, a coupon bundle, and exclusive deals on selected items. Is the Temu $100 off coupon legit? Absolutely. Our coupon code acu729640 is 100% tested, verified, and has no expiration date. It works for both new and old users worldwide. Can I get free shipping with the Temu coupon code? Yes, the Temu $100 off coupon also includes free shipping to 68 countries, including the USA, Canada, UK, and many European nations. How do I apply the Temu coupon code $100 off? Simply enter the code acu729640 at checkout on the Temu app or website, and the discount will be automatically applied to your cart.  
    • New users at Temu receive a $100 discount on orders over $100 Use the code [aci789589] during checkout to get Temu Coupon Code $100 off For New Users. Yes, Temu offers $100 off coupon code “aci789589” for first-time users. Temu 100% Off coupon code "aci789589" will save you $100 on your order. To get a discount, click on the item to purchase and enter the code. Yes, Temu offers $100 off coupon code “aci789589” for first-time users. You can get a$100 bonus plus 30% off any purchase at Temu with the$100 Coupon Bundle at Temu if you sign up with the referral code [aci789589] and make a first purchase of$50 or more. The Temu $100 Off coupon code (aci789589) will save you $100 on your order. To get a discount, click on the item to purchase and enter the code. Yes Temu offers $100 Off Coupon Code “aci789589” for First Time Users. Yes, Temu offers $100 off coupon code {aci789589} for first-time users. You can get a $100 bonus plus 100% off any purchase at Temu with the $100 Coupon Bundle if you sign up with the referral code [aci789589] and make a first purchase of $100 or more. If you are who wish to join Temu, then you should use this exclusive Temu coupon code $100 off (aci789589) and get $100 off on your purchase with Temu. You can get a $100 discount with Temu coupon code {aci789589}. This exclusive offer is for existing customers and can be used for a $100 reduction on your total purchase. Enter coupon code {aci789589} at checkout to avail of the discount. You can use the code {aci789589} to get a $100 off Temu coupon as a new customer. Apply this Temu coupon code $100 off (aci789589) to get a $100 discount on your shopping with Temu. If you’re a first-time user and looking for a Temu coupon code $100 first time user(aci789589) then using this code will give you a flat $100 Off and a 90% discount on your Temu shopping. Temu $100% Off Coupon Code "aci789589" will save you $100 on your order. To get a discount, click on the item to purchase and enter the code. Temu coupon code$100off-{aci789589} Temu coupon code -{aci789589} Temu coupon code$50 off-{aci789589} Temu Coupon code [aci789589] for existing users can get up to 50% discount on product during checkout. Temu Coupon Codes for Existing Customers-aci789589 Temu values its loyal customers and offers various promo codes, including the Legit Temu Coupon Code (aci789589]) or (aci789589), which existing users can use. This ensures that repeat shoppers can also benefit from significant discounts on their purchases. Keep an eye out for special promotions and offers that are periodically available to enhance your shopping experience.
    • New users at Temu receive a $100 discount on orders over $100 Use the code [aci789589] during checkout to get Temu Coupon Code $100 off For New Users. Yes, Temu offers $100 off coupon code “aci789589” for first-time users. Temu 100% Off coupon code "aci789589" will save you $100 on your order. To get a discount, click on the item to purchase and enter the code. Yes, Temu offers $100 off coupon code “aci789589” for first-time users. You can get a$100 bonus plus 30% off any purchase at Temu with the$100 Coupon Bundle at Temu if you sign up with the referral code [aci789589] and make a first purchase of$50 or more. The Temu $100 Off coupon code (aci789589) will save you $100 on your order. To get a discount, click on the item to purchase and enter the code. Yes Temu offers $100 Off Coupon Code “aci789589” for First Time Users. Yes, Temu offers $100 off coupon code {aci789589} for first-time users. You can get a $100 bonus plus 100% off any purchase at Temu with the $100 Coupon Bundle if you sign up with the referral code [aci789589] and make a first purchase of $100 or more. If you are who wish to join Temu, then you should use this exclusive Temu coupon code $100 off (aci789589) and get $100 off on your purchase with Temu. You can get a $100 discount with Temu coupon code {aci789589}. This exclusive offer is for existing customers and can be used for a $100 reduction on your total purchase. Enter coupon code {aci789589} at checkout to avail of the discount. You can use the code {aci789589} to get a $100 off Temu coupon as a new customer. Apply this Temu coupon code $100 off (aci789589) to get a $100 discount on your shopping with Temu. If you’re a first-time user and looking for a Temu coupon code $100 first time user(aci789589) then using this code will give you a flat $100 Off and a 90% discount on your Temu shopping. Temu $100% Off Coupon Code "aci789589" will save you $100 on your order. To get a discount, click on the item to purchase and enter the code. Temu coupon code$100off-{aci789589} Temu coupon code -{aci789589} Temu coupon code$50 off-{aci789589} Temu Coupon code [aci789589] for existing users can get up to 50% discount on product during checkout. Temu Coupon Codes for Existing Customers-aci789589 Temu values its loyal customers and offers various promo codes, including the Legit Temu Coupon Code (aci789589]) or (aci789589), which existing users can use. This ensures that repeat shoppers can also benefit from significant discounts on their purchases. Keep an eye out for special promotions and offers that are periodically available to enhance your shopping experience.
  • Topics

×
×
  • Create New...

Important Information

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