Jump to content

[SOLVED][1.8] With built JAR, it crashes with NoClassDefFoundError


Recommended Posts

Posted

My mod runs great in Eclipse, but if I gradlew build and then use the resulting JAR in the actual Minecraft install it crashes.

 

Using the new launcher, I can play vanilla 1.8 okay, and I can play Forge 1.8 okay (suing profile for fml-1.8-8.0.20.1023) okay.  But if I put my JAR in the mods folder it crashes with the following exception.  I don't find the console messages that helpful, as it just mentions a NoClassDefFoundError for a class that works fine when running from Eclipse and then gives trace to fairly general classloader methods.

 

 

java.lang.NoClassDefFoundError: com/blogspot/jabelarminecraft/magicbeans/items/ItemMagicBeans

at java.lang.Class.forName0(Native Method)

at java.lang.Class.forName(Class.java:344)

at net.minecraftforge.fml.common.FMLModContainer.constructMod(FMLModContainer.java:422)

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:483)

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:208)

at net.minecraftforge.fml.common.LoadController.propogateStateMessage(LoadController.java:187)

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:483)

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:118)

at net.minecraftforge.fml.common.Loader.loadMods(Loader.java:493)

at net.minecraftforge.fml.client.FMLClientHandler.beginMinecraftLoading(FMLClientHandler.java:208)

at net.minecraft.client.Minecraft.func_71384_a(Minecraft.java:414)

at net.minecraft.client.Minecraft.func_99999_d(Minecraft.java:326)

at net.minecraft.client.main.Main.main(SourceFile:120)

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:483)

at net.minecraft.launchwrapper.Launch.launch(Launch.java:135)

at net.minecraft.launchwrapper.Launch.main(Launch.java:28)

Caused by: java.lang.ClassNotFoundException: com.blogspot.jabelarminecraft.magicbeans.items.ItemMagicBeans

at net.minecraft.launchwrapper.LaunchClassLoader.findClass(LaunchClassLoader.java:191)

at java.lang.ClassLoader.loadClass(ClassLoader.java:424)

at java.lang.ClassLoader.loadClass(ClassLoader.java:357)

... 35 more

Caused by: java.lang.NoClassDefFoundError: com/blogspot/jabelarminecraft/magicbeans/items/ItemSeedFoodMagicBeans

at java.lang.ClassLoader.defineClass1(Native Method)

at java.lang.ClassLoader.defineClass(ClassLoader.java:760)

at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)

at net.minecraft.launchwrapper.LaunchClassLoader.findClass(LaunchClassLoader.java:182)

... 37 more

Caused by: java.lang.ClassNotFoundException: com.blogspot.jabelarminecraft.magicbeans.items.ItemSeedFoodMagicBeans

at net.minecraft.launchwrapper.LaunchClassLoader.findClass(LaunchClassLoader.java:101)

at java.lang.ClassLoader.loadClass(ClassLoader.java:424)

at java.lang.ClassLoader.loadClass(ClassLoader.java:357)

... 41 more

 

 

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

---------------------------------------------------------------------------------------

 

-- Head --

Stacktrace:

at java.lang.Class.forName0(Native Method)

at java.lang.Class.forName(Class.java:344)

at net.minecraftforge.fml.common.FMLModContainer.constructMod(FMLModContainer.java:422)

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:483)

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:208)

at net.minecraftforge.fml.common.LoadController.propogateStateMessage(LoadController.java:187)

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:483)

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:118)

at net.minecraftforge.fml.common.Loader.loadMods(Loader.java:493)

at net.minecraftforge.fml.client.FMLClientHandler.beginMinecraftLoading(FMLClientHandler.java:208)

at net.minecraft.client.Minecraft.func_71384_a(Minecraft.java:414)

 

-- Initialization --

Details:

Stacktrace:

at net.minecraft.client.Minecraft.func_99999_d(Minecraft.java:326)

at net.minecraft.client.main.Main.main(SourceFile:120)

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:483)

at net.minecraft.launchwrapper.Launch.launch(Launch.java:135)

at net.minecraft.launchwrapper.Launch.main(Launch.java:28)

 

-- System Details --

Details:

Minecraft Version: 1.8

Operating System: Windows 8.1 (amd64) version 6.3

Java Version: 1.8.0_25, Oracle Corporation

Java VM Version: Java HotSpot 64-Bit Server VM (mixed mode), Oracle Corporation

Memory: 369586352 bytes (352 MB) / 609746944 bytes (581 MB) up to 3817865216 bytes (3641 MB)

JVM Flags: 2 total; -XX:HeapDumpPath=MojangTricksIntelDriversForPerformance_javaw.exe_minecraft.exe.heapdump -Xmx4G

IntCache: cache: 0, tcache: 0, allocated: 0, tallocated: 0

FML: MCP v9.10 FML v8.0.20.1023 3 mods loaded, 3 mods active

mcp{9.05} [Minecraft Coder Pack] (minecraft.jar) Unloaded->Constructed

FML{8.0.20.1023} [Forge Mod Loader] (fml-1.8-8.0.20.1023-1.8.jar) Unloaded->Constructed

magicbeans{1.0.0} [Magic Beans] (magicbeans-1.8-1.0.0.jar) Unloaded

Launched Version: 1.8-FML8.0.20.1023-1.8

LWJGL: 2.9.1

OpenGL: GeForce GTX 760/PCIe/SSE2 GL version 4.5.0 NVIDIA 347.52, NVIDIA Corporation

GL Caps: Using GL 1.3 multitexturing.

Using GL 1.3 texture combiners.

Using framebuffer objects because OpenGL 3.0 is supported and separate blending is supported.

Shaders are available because OpenGL 2.1 is supported.

VBOs are available because OpenGL 1.5 is supported.

 

Using VBOs: No

Is Modded: Definitely; Client brand changed to 'fml'

Type: Client (map_client.txt)

Resource Packs: []

Current Language: English (US)

Profiler Position: N/A (disabled)

 

Check out my tutorials here: http://jabelarminecraft.blogspot.com/

Posted

Question:

 

Why are you accessing that class with reflection and not wrapping it in a try...catch?

Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable.  If you think this is the case, JUST REPORT ME.  Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice.

 

Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked.

 

DO NOT PM ME WITH PROBLEMS. No help will be given.

Posted

Ok, show your main mod file, as some aspect of your @mod annotation is fucked up

Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable.  If you think this is the case, JUST REPORT ME.  Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice.

 

Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked.

 

DO NOT PM ME WITH PROBLEMS. No help will be given.

Posted

main mod file:

 

/**

    Copyright © 2014 by jabelar

*/

 

package com.blogspot.jabelarminecraft.magicbeans;

 

import java.io.File;

 

import net.minecraft.block.Block;

import net.minecraft.block.material.Material;

import net.minecraft.item.Item;

import net.minecraft.item.ItemArmor;

import net.minecraft.item.ItemArmor.ArmorMaterial;

import net.minecraft.util.EnumChatFormatting;

import net.minecraftforge.common.config.Configuration;

import net.minecraftforge.common.util.EnumHelper;

import net.minecraftforge.fml.common.Mod;

import net.minecraftforge.fml.common.Mod.EventHandler;

import net.minecraftforge.fml.common.Mod.Instance;

import net.minecraftforge.fml.common.SidedProxy;

import net.minecraftforge.fml.common.event.FMLInitializationEvent;

import net.minecraftforge.fml.common.event.FMLPostInitializationEvent;

import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;

import net.minecraftforge.fml.common.event.FMLServerAboutToStartEvent;

import net.minecraftforge.fml.common.event.FMLServerStartedEvent;

import net.minecraftforge.fml.common.event.FMLServerStartingEvent;

import net.minecraftforge.fml.common.event.FMLServerStoppedEvent;

import net.minecraftforge.fml.common.event.FMLServerStoppingEvent;

import net.minecraftforge.fml.common.network.FMLEventChannel;

import net.minecraftforge.fml.common.network.simpleimpl.SimpleNetworkWrapper;

 

import com.blogspot.jabelarminecraft.magicbeans.armor.ItemArmorSafeFalling;

import com.blogspot.jabelarminecraft.magicbeans.blocks.BlockCloud;

import com.blogspot.jabelarminecraft.magicbeans.blocks.BlockMagicBeanStalk;

import com.blogspot.jabelarminecraft.magicbeans.blocks.BlockSimple;

import com.blogspot.jabelarminecraft.magicbeans.items.ItemGoldenEgg;

import com.blogspot.jabelarminecraft.magicbeans.items.ItemGoldenGooseMeat;

import com.blogspot.jabelarminecraft.magicbeans.items.ItemMagicBeans;

import com.blogspot.jabelarminecraft.magicbeans.items.MagicBeansMonsterPlacer;

import com.blogspot.jabelarminecraft.magicbeans.materials.MaterialCloud;

import com.blogspot.jabelarminecraft.magicbeans.proxy.CommonProxy;

import com.blogspot.jabelarminecraft.magicbeans.structures.StructureCastleTalia;

 

@Mod(modid =

      MagicBeans.MODID,

      name = MagicBeans.MODNAME,

      version = MagicBeans.MODVERSION,

      guiFactory = "com.blogspot.jabelarminecraft."+MagicBeans.MODID+".gui.GuiFactoryMagicBeans")

public class MagicBeans

{

    public static final String MODID = "magicbeans";

    public static final String MODNAME = "Magic Beans";

    public static final String MODVERSION = "1.0.0";

    public static final String MODDESCRIPTION = "Start the adventure by feeding a golden carrot to a grown-up cow.";

    public static final String MODAUTHOR = "jabelar";

    public static final String MODCREDITS = "Taliaailat, Jnaejnae";

    public static final String MODURL = "www.jabelarminecraft.blogspot.com";

    public static final String MODLOGO = "jackandbeanstalk.png";

 

    // this is tag used for sub-compound in extended properties and packet syncing

public final static String EXT_PROPS_NAME = "extendedPropertiesMagicBeans";

 

// use a named channel to identify packets related to this mod

    public static final String NETWORK_CHANNEL_NAME = "MagicBeans";

public static FMLEventChannel channel;

// networking

public static SimpleNetworkWrapper network;

 

    // set up configuration properties (will be read from config file in preInit)

    public static File configFile;

    public static Configuration config;

    public static Boolean configGiantIsHostile = true;

    public static int configGoldForBeans = 100;

    public static int configGiantHealth = 10;

public static boolean configGiantCanRegen = true;

    public static int configGiantAttackDamage = 4;

    public static double configChanceCowIsMagic = 0.1D;

public static int configMaxStalkHeight = 136;

public static int configTicksPerGrowStage = 20;

public static int configTimeUntilNextEgg = 900;

   

    // instantiate materials

    public final static Material materialCloud = new MaterialCloud();

    // see custom armor tutorial at: http://bedrockminer.jimdo.com/modding-tutorials/basic-modding/custom-armor/

    public final static ArmorMaterial SAFEFALLINGLEATHER = EnumHelper.addArmorMaterial("SAFEFALLINGLEATHER", "safe_falling", 5, new int[]{2, 6, 5, 2}, 15);

   

    // instantiate blocks

    // need to instantiate beanstalk block before item as the item constructor associates with block

    public final static Block blockMagicBeanStalk = new BlockMagicBeanStalk();

public final static Block blockCloud = new BlockCloud();

    public final static Block blockSimple = new BlockSimple().setUnlocalizedName("mbe01_block_simple");

 

    // instantiate items

// important to do this after blocks where item is associate with custom block

    public final static ItemGoldenEgg itemGoldenEgg = new ItemGoldenEgg();

    public final static Item magicBeans = new ItemMagicBeans();

    public final static ItemArmor bootsOfSafeFalling = new ItemArmorSafeFalling("boots_safe_falling", SAFEFALLINGLEATHER, 3);

    public final static ItemGoldenGooseMeat goldenGooseMeat = new ItemGoldenGooseMeat(4, 1.2F, false);

   

    public final static MagicBeansMonsterPlacer spawnFamilyCow = new MagicBeansMonsterPlacer("family_cow",  0x4EF56D, 0xFCFC03);

    public final static MagicBeansMonsterPlacer spawnGiant = new MagicBeansMonsterPlacer("giant", 0xDB9112, 0x0AC798);

    public final static MagicBeansMonsterPlacer spawnMysteriousStranger = new MagicBeansMonsterPlacer("mysterious_stranger", 0x8C6620, 0xA100B3);

 

    // instantiate structures

    // important to do this after blocks in case structure uses custom block

    public final static StructureCastleTalia structureCastleTalia = new StructureCastleTalia();

   

    // instantiate the mod

    @Instance(MODID)

   

    public static MagicBeans instance;

   

    // create custom creativetab for mod items

    //public static CreativeTabs tabMagicBeansPlus = new MagicBeansCreativeTab("MagicBeans");

   

    // instantiate blocks

    //public final static Block blockTomato = new BlockTomato();

 

    // instantiate items

    //public final static Item tomato = new ItemTomato();

   

    // Says where the client and server 'proxy' code is loaded.

    @SidedProxy(clientSide="com.blogspot.jabelarminecraft.magicbeans.proxy.ClientProxy", serverSide="com.blogspot.jabelarminecraft.magicbeans.proxy.CommonProxy")

    public static CommonProxy proxy;

   

    // Version checking instance

public static VersionChecker versionChecker;

public static boolean haveWarnedVersionOutOfDate = false;

           

    @EventHandler

    // preInit "Run before anything else. Read your config, create blocks, items, etc, and register them with the GameRegistry."

    public void fmlLifeCycleEvent(FMLPreInitializationEvent event)

    { 

        // DEBUG

        System.out.println("preInit()"+event.getModMetadata().name);

               

        // hard-code mod information so don't need mcmod.info file

        event.getModMetadata().autogenerated = false ; // stops it from complaining about missing mcmod.info

        event.getModMetadata().credits = EnumChatFormatting.BLUE+MODCREDITS;

        event.getModMetadata().authorList.add(EnumChatFormatting.RED+MODAUTHOR);

        event.getModMetadata().description = EnumChatFormatting.YELLOW+MODDESCRIPTION;

        event.getModMetadata().url = MODURL;

        event.getModMetadata().logoFile = MODLOGO;

       

        proxy.fmlLifeCycleEvent(event);

    }

 

@EventHandler

    // Do your mod setup. Build whatever data structures you care about. Register recipes."

    // Register network handlers

    public void fmlLifeCycleEvent(FMLInitializationEvent event)

    {

   

        // DEBUG

        System.out.println("init()");

       

        proxy.fmlLifeCycleEvent(event);

    }

 

@EventHandler

    // postInit "Handle interaction with other mods, complete your setup based on this."

    public void fmlLifeCycle(FMLPostInitializationEvent event)

{

        // DEBUG

        System.out.println("postInit()");

       

        proxy.fmlLifeCycleEvent(event);

    }

 

@EventHandler

public void fmlLifeCycle(FMLServerAboutToStartEvent event)

{

        // DEBUG

        System.out.println("Server about to start");

       

proxy.fmlLifeCycleEvent(event);

}

 

@EventHandler

// register server commands

// refer to tutorial at http://www.minecraftforge.net/wiki/Server_Command#Mod_Implementation

public void fmlLifeCycle(FMLServerStartingEvent event)

{

        // DEBUG

        System.out.println("Server starting");

       

proxy.fmlLifeCycleEvent(event);

}

 

@EventHandler

public void fmlLifeCycle(FMLServerStartedEvent event)

{

        // DEBUG

        System.out.println("Server started");

       

proxy.fmlLifeCycleEvent(event);

}

 

@EventHandler

public void fmlLifeCycle(FMLServerStoppingEvent event)

{

        // DEBUG

        System.out.println("Server stopping");

       

proxy.fmlLifeCycleEvent(event);

}

 

@EventHandler

public void fmlLifeCycle(FMLServerStoppedEvent event)

{

        // DEBUG

        System.out.println("Server stopped");

       

proxy.fmlLifeCycleEvent(event);

}

 

}

 

 

Check out my tutorials here: http://jabelarminecraft.blogspot.com/

Posted

Show the ItemMagicBeans class

Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable.  If you think this is the case, JUST REPORT ME.  Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice.

 

Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked.

 

DO NOT PM ME WITH PROBLEMS. No help will be given.

Posted

Show the ItemMagicBeans class

 

You're welcome to look at the whole codebase here: https://github.com/jabelar/MagicBeans-1.8fixed

 

Here is the ItemMagicBeans class.  Nothing special:

package com.blogspot.jabelarminecraft.magicbeans.items;

import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.item.ItemStack;
import net.minecraft.util.StatCollector;

import com.blogspot.jabelarminecraft.magicbeans.MagicBeans;
import com.blogspot.jabelarminecraft.magicbeans.utilities.MagicBeansUtilities;

public class ItemMagicBeans extends ItemSeedFoodMagicBeans 
{
    private static final ItemStack p_77653_1_ = null;

public ItemMagicBeans() 
    {
        super(1, 0.3F, MagicBeans.blockMagicBeanStalk);
        setUnlocalizedName("magicbeans");
        setCreativeTab(CreativeTabs.tabMaterials);
    }
    
    @Override
    public String getItemStackDisplayName(ItemStack parItemStack) 
    {
        return (MagicBeansUtilities.stringToRainbow(StatCollector.translateToLocal(getUnlocalizedNameInefficiently(p_77653_1_) + ".name")).trim());
    }
}

 

Also note that this mod works when running from Eclipse.  I think the NoClassDef error can be related to class path problems, but I don't really know what exactly would be wrong.

Check out my tutorials here: http://jabelarminecraft.blogspot.com/

Posted

Question:

What the hell is p_77653_1_, why does it have an obfuscated name, and why the hell are you using it to store a string, and why the hell is it always null?

Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable.  If you think this is the case, JUST REPORT ME.  Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice.

 

Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked.

 

DO NOT PM ME WITH PROBLEMS. No help will be given.

Posted

Question:

What the hell is p_77653_1_, why does it have an obfuscated name, and why the hell are you using it to store a string, and why the hell is it always null?

 

I'm in process of updating my game to 1.8, so there is still some cleanup to do.  That field was just the unlocalized name really, but I was doing some conditional stuff on it (wouldn't always just be name of the item) so didn't want to mess with actual unlocalized name.  Anyway, I removed that and the NoClassDef problem remains.  (Note I really don't think a problem with some string field could be cause of NoClassDef problem for loader, but I appreciate you pointing this field out.)

 

Class now looks like:

 

package com.blogspot.jabelarminecraft.magicbeans.items;

 

import net.minecraft.creativetab.CreativeTabs;

import net.minecraft.item.ItemStack;

import net.minecraft.util.StatCollector;

 

import com.blogspot.jabelarminecraft.magicbeans.MagicBeans;

import com.blogspot.jabelarminecraft.magicbeans.utilities.MagicBeansUtilities;

 

public class ItemMagicBeans extends ItemSeedFoodMagicBeans

{

public ItemMagicBeans()

    {

        super(1, 0.3F, MagicBeans.blockMagicBeanStalk);

        setUnlocalizedName("magicbeans");

        setCreativeTab(CreativeTabs.tabMaterials);

    }

   

    @Override

    public String getItemStackDisplayName(ItemStack parItemStack)

    {

        return (MagicBeansUtilities.stringToRainbow(StatCollector.translateToLocal(getUnlocalizedNameInefficiently(new ItemStack(this)) + ".name")).trim());

    }

}

 

 

Note I was also suspicious of the StatCollector class, so I tried the ItemMagicBeans with a simple return ("Magic Beans") and it also fails with NoClassDef error.

Check out my tutorials here: http://jabelarminecraft.blogspot.com/

Posted

Okay, I think I solved it.  At least I got it working on a different computer just fine.  I think I used the same installer, but some reason on the original computer, the launcher profile references fml-1.8-8.0.20.1023 but with the working computer I just tried the profile references 1.8-Forge11.14.1.1333.

 

Anyway, that explains it -- mismatch with the profile.

Check out my tutorials here: http://jabelarminecraft.blogspot.com/

Posted

Why aren't you using the provided item stack and instead creating a new one?

 

    @Override

    public String getItemStackDisplayName(ItemStack parItemStack)

    {

        return (MagicBeansUtilities.stringToRainbow(StatCollector.translateToLocal(getUnlocalizedNameInefficiently(new ItemStack(this)) + ".name")).trim());

    }

Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable.  If you think this is the case, JUST REPORT ME.  Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice.

 

Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked.

 

DO NOT PM ME WITH PROBLEMS. No help will be given.

  • 2 years later...
Posted

To anyone, who has got the same problem, NoClassDef when running minecraft with exported jar (in environment everything works), I did an inspection in Intellij and found the SideOnly missing from GuiHandler and Keyhandler. You might have different "hidden" problems, just use the inspection.

Posted (edited)

Most modders who raise NoClassDefFoundError when going from Eclipse to jar have made a different (and simple) mistake:  They used Eclipse's export command to build their jars (Jabelar is an experienced modder who did use gradlew build, so that wasn't the problem this time).

 

Without gradle, a mod that works in Eclipse will turn into a jar that fails in a mod folder. This is because Eclipse's export does not reobfuscate class names (or not correctly). The pretty class names we use in the editor will not be found in production-released Minecraft, hence the NoClassDefFoundError <-- EDIT: Oops, method not found errors, my bad.

 

Therefore, most modders finding this thread need to learn this:

Modders must use gradle to make their jars so that the reobfuscation is done correctly.

 

Edited by jeffryfisher
Oops, corrected

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.

Posted

The MCP to SRG obfuscation performed by the build Gradle task only changes field and method names, class names are always the same between MCP and SRG.

 

This means that NoClassDefFoundError can't be caused by lack of reobfuscation.

 

Usually it's caused by accessing a client-only class from code that runs on the dedicated server. 

  • Like 1

Please don't PM me to ask for help. Asking your question in a public thread preserves it for people who are having the same problem in the future.

Posted

Thanks for the clarification; I hadn't paid attention to different kinds of names being treated differently.

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

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