Jump to content
View in the app

A better way to browse. Learn more.

Forge Forums

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

[1.10.2] Crash when trying to load external mod in development environment

Featured Replies

Posted

I'm trying to develop a mod that depends on Realistic Terrain Generation (RTG) for terrain generation algorithms. My understanding is that, to load an external mod in the development environment, I can just place RTG's release jar into the /run/mods directory of my Eclipse workspace. According to some other forum threads I found, there used to be a problem with compatibility between obfuscated and deobfuscated versions of external mods, but apparently this has been changed in a recent version of Forge so that mods can be loaded whether or not they are obfuscated.

 

Unfortunately, when I try this with RTG, Minecraft crashes after postinitialisation with a NoClassDefFoundError. This happens whether or not I include its API in the /src/api source folder. I'm pretty sure it's not a problem with RTG, because there are already other mods that do the same thing - and with the same version of both Forge (12.18.2.2099) and RTG (4.1.2.4) - apparently without any problems. I don't really understand FML well enough to be able to tell how, though, and I couldn't find any similar threads on the forums.

 

Can anybody help?

 

Here's the stack trace:

Spoiler

[Client thread/ERROR] [FML]: Caught exception from RTG
java.lang.NoClassDefFoundError: rtg/util/RealisticBiomePresenceTester
	at rtg.RTG.initPost(RTG.java:115) ~[RTG.class:?]
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_121]
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_121]
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_121]
	at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_121]
	at net.minecraftforge.fml.common.FMLModContainer.handleModStateEvent(FMLModContainer.java:599) ~[forgeSrc-1.10.2-12.18.2.2099.jar:?]
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_121]
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_121]
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_121]
	at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_121]
	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:239) ~[forgeSrc-1.10.2-12.18.2.2099.jar:?]
	at net.minecraftforge.fml.common.LoadController.propogateStateMessage(LoadController.java:217) ~[forgeSrc-1.10.2-12.18.2.2099.jar:?]
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_121]
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_121]
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_121]
	at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_121]
	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:142) [LoadController.class:?]
	at net.minecraftforge.fml.common.Loader.initializeMods(Loader.java:795) [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_121]
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_121]
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_121]
	at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_121]
	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_121]
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_121]
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_121]
	at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_121]
	at net.minecraftforge.gradle.GradleStartCommon.launch(GradleStartCommon.java:97) [start/:?]
	at GradleStart.main(GradleStart.java:26) [start/:?]
Caused by: java.lang.ClassNotFoundException: rtg.util.RealisticBiomePresenceTester
	at net.minecraft.launchwrapper.LaunchClassLoader.findClass(LaunchClassLoader.java:191) ~[launchwrapper-1.12.jar:?]
	at java.lang.ClassLoader.loadClass(ClassLoader.java:424) ~[?:1.8.0_121]
	at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ~[?:1.8.0_121]
	... 44 more
Caused by: java.lang.RuntimeException: java.lang.ClassNotFoundException: rtg.world.biome.realistic.RealisticBiomeBase
	at org.objectweb.asm.ClassWriter.getCommonSuperClass(ClassWriter.java:1684) ~[asm-debug-all-5.0.3.jar:5.0.3]
	at org.objectweb.asm.ClassWriter.getMergedType(ClassWriter.java:1654) ~[asm-debug-all-5.0.3.jar:5.0.3]
	at org.objectweb.asm.Frame.merge(Frame.java:1426) ~[asm-debug-all-5.0.3.jar:5.0.3]
	at org.objectweb.asm.Frame.merge(Frame.java:1325) ~[asm-debug-all-5.0.3.jar:5.0.3]
	at org.objectweb.asm.MethodWriter.visitMaxs(MethodWriter.java:1475) ~[asm-debug-all-5.0.3.jar:5.0.3]
	at org.objectweb.asm.commons.LocalVariablesSorter.visitMaxs(LocalVariablesSorter.java:170) ~[asm-debug-all-5.0.3.jar:5.0.3]
	at org.objectweb.asm.ClassReader.readCode(ClassReader.java:1554) ~[asm-debug-all-5.0.3.jar:5.0.3]
	at org.objectweb.asm.ClassReader.readMethod(ClassReader.java:1017) ~[asm-debug-all-5.0.3.jar:5.0.3]
	at org.objectweb.asm.ClassReader.accept(ClassReader.java:693) ~[asm-debug-all-5.0.3.jar:5.0.3]
	at org.objectweb.asm.ClassReader.accept(ClassReader.java:506) ~[asm-debug-all-5.0.3.jar:5.0.3]
	at net.minecraftforge.fml.common.asm.transformers.DeobfuscationTransformer.transform(DeobfuscationTransformer.java:51) ~[forgeSrc-1.10.2-12.18.2.2099.jar:?]
	at net.minecraft.launchwrapper.LaunchClassLoader.runTransformers(LaunchClassLoader.java:279) ~[launchwrapper-1.12.jar:?]
	at net.minecraft.launchwrapper.LaunchClassLoader.findClass(LaunchClassLoader.java:176) ~[launchwrapper-1.12.jar:?]
	at java.lang.ClassLoader.loadClass(ClassLoader.java:424) ~[?:1.8.0_121]
	at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ~[?:1.8.0_121]
	... 44 more

 

I'm having similar issues with a bunch of other 1.10.2 mods (cofhcore, codechickencore, jei - all downloaded from trustworthy sites), the only one I got running so far is hwyla. I also found, that the mcp conf directory for the deobfuscator doesn't exist on my computer for 1.10.2.  Please help.

  • Author
39 minutes ago, grexter said:

I'm having similar issues with a bunch of other 1.10.2 mods (cofhcore, codechickencore, jei - all downloaded from trustworthy sites), the only one I got running so far is hwyla.

I tried a few more mods as well, and got similarly inconsistent results - WorldEdit, for example, crashes with similar errors, but Chisel doesn't. And I can't see what RTG, JEI and WorldEdit have in common that Chisel and HWYLA don't.

 

39 minutes ago, grexter said:

I also found, that the mcp conf directory for the deobfuscator doesn't exist on my computer for 1.10.2.  Please help.

Not sure what you mean by this. Is it part of the same problem? If not, you might be better off starting a new thread for it.

Building against mods is just the case of getting the deobfuscated (deobf in short) mod file and adding it to the gradle compile configuration.

All files in /libs are added to that configuration automagically as far as I can remember.

 

Not sure about mods with a declared api.

Edited by HashtagShell
type

  • Author

Oh, I've got that far - my mod builds fine, and I can even compile it and run it (alongside RTG) in a normal Forge installation without any problems. What I'm having trouble with is getting RTG to run in the deobfuscated development environment. Sorry, I could probably have made that clearer in the first place.

Beware of core mods (I saw the word  "core" in at least one of the mod names listed above). Forge doesn't play nice with other core mods, so you could still have problems even if you do everything "right".

The debugger is a powerful and necessary tool in any IDE, so learn how to use it. You'll be able to tell us more and get better help here if you investigate your runtime problems in the debugger before posting.

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

Important Information

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

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.