Jump to content

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


jabelar

Recommended Posts

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/

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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/

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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/

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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/

Link to comment
Share on other sites

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/

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

  • 2 years later...

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.

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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.

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.



  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • A fatal error has been detected by the Java Runtime Environment: # # EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x00007ffc3fe22b60, pid=15228, tid=5140 # # JRE version: OpenJDK Runtime Environment Microsoft-8035246 (17.0.8+7) (build 17.0.8+7-LTS) # Java VM: OpenJDK 64-Bit Server VM Microsoft-8035246 (17.0.8+7-LTS, mixed mode, tiered, compressed oops, compressed class ptrs, g1 gc, windows-amd64) # Problematic frame: # C [atio6axx.dll+0x192b60] # # No core dump will be written. Minidumps are not enabled by default on client versions of Windows # # If you would like to submit a bug report, please visit: # https://aka.ms/minecraftjavacrashes # The crash happened outside the Java Virtual Machine in native code. # See problematic frame for where to report the bug i have no idea why please help
    • Considering the financial revolution sparked by cryptocurrencies like Bitcoin, the digital era has opened up a plethora of opportunities. But this exciting new world also comes with a terrible reality: in the harsh, brutal blockchain environment, there's always a danger you could lose your precious digital assets. Services like ADWARE RECOVERY SPECIALIST are not merely recovery agents in this case; they are crypto lifelines, and my own experience attests to their vital importance. I had an amazing time exploring the world of Bitcoin on my own; it was exciting to be in a completely new place and to see the possibility of independent money. However, a careless mistake of choosing the incorrect platform for my investment sent me into total despair. It seemed as though my digital lifeblood, Bitcoin, had been devoured by the blockchain's vicious maw. Overwhelmed with hope, I began a frantic quest for solutions, looking up any clue of assistance on the internet. I discovered  ADWARE RECOVERY SPECIALIST at that point.  Initially, I was filled with misgivings, but their unwavering professionalism and clear communication offered me a glimpse of hope. I set them the very impossible task of locating my missing fortune. The ADWARE RECOVERY SPECIALIST team of professionals meticulously penetrated the labyrinthine depths of the blockchain with the aid of cutting-edge technology and years of honed experience, treating my case with the utmost care and respect and keeping me informed at every turn. I had never encountered anything like the recuperation process. The days of confusing technical jargon and excruciatingly long wait times were over. And then the miraculous happened. My Bitcoin miraculously reappeared in my wallet, coming safe and sound from the digital void in an almost amazing length of time. Integrating  ADWARE RECOVERY SPECIALIST into your Bitcoin recovery process is not as magical as waving a wand, but it sure feels like it with the seamless and effective tools it offers. By following best practices, training your staff, and learning from successful case studies, you can optimize your Bitcoin recovery efforts and stay ahead of potential risks. The future outlook for Bitcoin recovery with ADWARE RECOVERY SPECIALIST looks promising, providing users with the confidence and tools they need to navigate the ever-evolving landscape of digital assets. It was a very happy moment that showcased the ADWARE RECOVERY SPECIALIST team's remarkable talent and dedication. However, my experience serves more purposes than just self-interest; it serves as a sobering reminder of the expanding demand for dependable and trustworthy bitcoin recovery services, such as ADWARE online recovery.
    • Quick-Books is great with regards to coordinating your monetary data. You can decide to live talk with a specialist at Quick-Books to get the answer for your questions. You will actually want to get to the talk going to the landing page and call us +1855-210-1428.
    • Update: I managed to make the item not disappear after crafting, but it doesn't remove any durability. import net.minecraft.enchantment.EnchantmentHelper; import net.minecraft.enchantment.Enchantments; import net.minecraft.enchantment.UnbreakingEnchantment; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; public class NuggetHammer extends Item { private boolean damage; public NuggetHammer(Properties p_i48487_1_) { super(p_i48487_1_); } @Override public int getMaxDamage(ItemStack stack) { return 54 - 1; } public boolean isBarVisible(ItemStack stack) { return false; } @Override public ItemStack getContainerItem(ItemStack stack) { ItemStack copy = stack.copy(); copy.setCount(1); if (!this.damage) return copy; int unbreaking = EnchantmentHelper.getItemEnchantmentLevel(Enchantments.UNBREAKING, stack); for (int i = 0; i < unbreaking; i++) { if (UnbreakingEnchantment.shouldIgnoreDurabilityDrop(stack, unbreaking, random)) return copy; } copy.setDamageValue(stack.getDamageValue() + 1); if (copy.getDamageValue() > stack.getMaxDamage()) return ItemStack.EMPTY; return copy; } }  
  • Topics

×
×
  • Create New...

Important Information

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