Jump to content
Search In
  • More options...
Find results that contain...
Find results in...

compatibility with JRebel ?


Recommended Posts



I'm trying to use JRebel (free Social Plan) with Minecraft Forge to make code changes without restarting Minecraft.


Encountered an issue: Forge reports error during startup. Console log below:



[2012-12-27 18:05:55] Contacting myJRebel server ..

[2012-12-27 18:05:57]

[2012-12-27 18:05:57] #############################################################

[2012-12-27 18:05:57]

[2012-12-27 18:05:57]  JRebel 5.1.2 (201212171004)

[2012-12-27 18:05:57]  © Copyright ZeroTurnaround OU, Estonia, Tartu.

[2012-12-27 18:05:57]

[2012-12-27 18:05:57]  Over the last 1 days JRebel prevented

[2012-12-27 18:05:57]  at least 1 redeploys/restarts saving you about 0 hours.

[2012-12-27 18:05:57]

[2012-12-27 18:05:57]  This product is licensed to Maxim Litvinov

[2012-12-27 18:05:57]

[2012-12-27 18:05:57]  License acquired through myJRebel server.

[2012-12-27 18:05:57]

[2012-12-27 18:05:57]  You are subscribed for the plan "JRebel Social Plan",

[2012-12-27 18:05:57]  subscription is for lifetime.

[2012-12-27 18:05:57]  next license check with the server is required by 2013-01-26.

[2012-12-27 18:05:57]

[2012-12-27 18:05:57]  The following plugins are disabled at the moment:

[2012-12-27 18:05:57]  * Camel plugin (set -Drebel.camel_plugin=true to enable)

[2012-12-27 18:05:57]  * Click plugin (set -Drebel.click_plugin=true to enable)

[2012-12-27 18:05:57]  * JRuby Plugin (set -Drebel.jruby_plugin=true to enable)

[2012-12-27 18:05:57]  * Jersey plugin (set -Drebel.jersey_plugin=true to enable)

[2012-12-27 18:05:57]  * Oracle ADF Core plugin (set -Drebel.adf_core_plugin=true to enable)

[2012-12-27 18:05:57]  * Oracle ADF Faces plugin (set -Drebel.adf_faces_plugin=true to enable)

[2012-12-27 18:05:57]  * RESTlet plugin (set -Drebel.restlet_plugin=true to enable)

[2012-12-27 18:05:57]  * Seam-Wicket plugin (set -Drebel.seam_wicket_plugin=true to enable)

[2012-12-27 18:05:57]  * Spring Data Plugin (set -Drebel.spring_data_plugin=true to enable)

[2012-12-27 18:05:57]  * WebObjects plugin (set -Drebel.webobjects_plugin=true to enable)

[2012-12-27 18:05:57]

[2012-12-27 18:05:57] #############################################################

[2012-12-27 18:05:57]

[2012-12-27 18:05:57] JRebel: Directory '/Users/metalim/Downloads/mc/forge/mcp/eclipse/Minecraft/bin' will be monitored for changes.

2012-12-27 18:05:59 [iNFO] [ForgeModLoader] Forge Mod Loader version for Minecraft 1.4.6 loading

2012-12-27 18:05:59 [FINEST] [ForgeModLoader] All core mods are successfully located

2012-12-27 18:05:59 [FINEST] [ForgeModLoader] Discovering coremods

2012-12-27 18:05:59 [FINEST] [ForgeModLoader] Found library file argo-2.25.jar present and correct in lib dir

2012-12-27 18:05:59 [FINEST] [ForgeModLoader] Found library file guava-12.0.1.jar present and correct in lib dir

2012-12-27 18:05:59 [FINEST] [ForgeModLoader] Found library file asm-all-4.0.jar present and correct in lib dir

2012-12-27 18:05:59 [FINEST] [ForgeModLoader] Found library file bcprov-jdk15on-147.jar present and correct in lib dir

2012-12-27 18:06:07 [iNFO] [sTDERR] Exception in thread "main" java.lang.RuntimeException: java.lang.NoClassDefFoundError: com/zeroturnaround/javarebel/gen/RebelLocator$$15dcc3ca

2012-12-27 18:06:07 [iNFO] [sTDERR] at cpw.mods.fml.relauncher.FMLRelauncher.setupHome(FMLRelauncher.java:175)

2012-12-27 18:06:07 [iNFO] [sTDERR] at cpw.mods.fml.relauncher.FMLRelauncher.relaunchClient(FMLRelauncher.java:92)

2012-12-27 18:06:07 [iNFO] [sTDERR] at cpw.mods.fml.relauncher.FMLRelauncher.handleClientRelaunch(FMLRelauncher.java:26)

2012-12-27 18:06:07 [iNFO] [sTDERR] at net.minecraft.client.Minecraft.main(Minecraft.java:2235)

2012-12-27 18:06:07 [iNFO] [sTDERR] at Start.main(Start.java:29)

2012-12-27 18:06:07 [iNFO] [sTDERR] Caused by: java.lang.NoClassDefFoundError: com/zeroturnaround/javarebel/gen/RebelLocator$$15dcc3ca

2012-12-27 18:06:07 [iNFO] [sTDERR] at cpw.mods.fml.common.asm.transformers.AccessTransformer.<clinit>(AccessTransformer.java:50001)

2012-12-27 18:06:07 [iNFO] [sTDERR] at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)

2012-12-27 18:06:07 [iNFO] [sTDERR] at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)

2012-12-27 18:06:07 [iNFO] [sTDERR] at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)

2012-12-27 18:06:07 [iNFO] [sTDERR] at java.lang.reflect.Constructor.newInstance(Constructor.java:513)

2012-12-27 18:06:07 [iNFO] [sTDERR] at java.lang.Class.newInstance0(Class.java:355)

2012-12-27 18:06:07 [iNFO] [sTDERR] at java.lang.Class.newInstance(Class.java:308)

2012-12-27 18:06:07 [iNFO] [sTDERR] at cpw.mods.fml.relauncher.RelaunchClassLoader.registerTransformer(RelaunchClassLoader.java:75)

2012-12-27 18:06:07 [iNFO] [sTDERR] at cpw.mods.fml.relauncher.RelaunchLibraryManager.handleLaunch(RelaunchLibraryManager.java:238)

2012-12-27 18:06:07 [iNFO] [sTDERR] at cpw.mods.fml.relauncher.FMLRelauncher.setupHome(FMLRelauncher.java:155)

2012-12-27 18:06:07 [iNFO] [sTDERR] ... 4 more

2012-12-27 18:06:07 [iNFO] [sTDERR] Caused by: java.lang.ClassNotFoundException: com.zeroturnaround.javarebel.gen.RebelLocator$$15dcc3ca

2012-12-27 18:06:07 [iNFO] [sTDERR] at cpw.mods.fml.relauncher.RelaunchClassLoader.findClass(RelaunchClassLoader.java:179)

2012-12-27 18:06:07 [iNFO] [sTDERR] at java.lang.ClassLoader.loadClass(ClassLoader.java:306)

2012-12-27 18:06:07 [iNFO] [sTDERR] at java.lang.ClassLoader.loadClass(ClassLoader.java:247)

2012-12-27 18:06:07 [iNFO] [sTDERR] ... 13 more

2012-12-27 18:06:07 [iNFO] [sTDERR] Caused by: java.lang.NullPointerException

2012-12-27 18:06:07 [iNFO] [sTDERR] at cpw.mods.fml.relauncher.RelaunchClassLoader.findClass(RelaunchClassLoader.java:138)

2012-12-27 18:06:07 [iNFO] [sTDERR] ... 15 more



I've tested JRebel with with vanilla Minecraft (via mcp725): works fine.


Question is: have any clue from the error message, how to fix that?


Link to comment
Share on other sites

Why are you using JRebel? What type of environment are you in that you need it?

Its a development tool that allows you to swap classes at runtime, but you know, every IDE has this functionality...

I do Forge for free, however the servers to run it arn't free, so anything is appreciated.
Patreon: http://www.patreon.com/lexmanos
Paypal: http://paypal.me/LexManos

BitCoin: 1Q8rWvUNMM2T1ZfDaFeeYQyVXtYoeT6tTn

Link to comment
Share on other sites

Not going to happen. JRebel is a custom classloader wrapped around the code it's running, and unfortunately, for FML and Forge to function, we need to break free of the core classloader framework so we can inject mods and libraries. So we'll pretty much 100% conflict with what JRebel is trying to do.


I'm not about to rewrite FML either. Sorry about that.


Link to comment
Share on other sites

cpw: can it technically be done? And on which side?

FML uses a custom class loader to load classes from mod files, so pretty much you'd have to merge the JRebel loader with that AFAIK.

Protip: try and find answers yourself before asking on the forum.

It's pretty likely that there is an answer.


Was I helpful? Give me a thank you!



width=635 height=903http://bit.ly/HZ03zy[/img]



Tired of waiting for mods to port to bukkit?

use BukkitForge! (now with a working version of WorldEdit!)

Link to comment
Share on other sites

As cpw said, if you want to try and merge JRebel support into FML feel free to submit a PR.

And you're right changing the structure of the class requires a re-launch in eclipse, however, it's not that big of a deal, and takes about 5 seconds. And you probably won't be doing it often :P

I do Forge for free, however the servers to run it arn't free, so anything is appreciated.
Patreon: http://www.patreon.com/lexmanos
Paypal: http://paypal.me/LexManos

BitCoin: 1Q8rWvUNMM2T1ZfDaFeeYQyVXtYoeT6tTn

Link to comment
Share on other sites

  • 3 years later...

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.

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

    • Hello I made a server forge with mods but when I changed it from other pc some mods are bug. I have identified the mods that are bug, here are the logs: Logs of the server with the bug mods removed: https://pastebin.com/wDxeM00A Logs of the server with all the bug mods: https://pastebin.com/ssGLVy2W                                                                                                                                                                                           Logs of the server with one bug mod: https://pastebin.com/4XnAuUic I tried to download an older version of the mods but it didn't work. How can I insert that mods? Thanks.
    • I'm not asking for a solution only for 1.16.5, a solution for more current versions will be fine as well
    • I know this chat is outdated but can you guys help me with this because i'm having the same problem and i am unable to get into the files because i am on mac
    • You only ever set the block on the client. See HoneycombItem.useOn() for the "correct" logic.
    • public InteractionResult use(BlockState blockState, Level level, BlockPos blockPos, Player player, InteractionHand hand, BlockHitResult blockHitResult) { ItemStack itemstack = player.getItemInHand(hand); boolean successfullyDyed = false; if (level.isClientSide) { if(player.getAbilities().mayBuild == true){ if(itemstack.getItem() == Items.RED_DYE){ level.setBlock(blockPos,blockState.setValue(TYPE,0),0); successfullyDyed = true; } else if(itemstack.getItem() == Items.ORANGE_DYE){ level.setBlock(blockPos,blockState.setValue(TYPE,1),0); successfullyDyed = true; } else if(itemstack.getItem() == Items.YELLOW_DYE){ level.setBlock(blockPos,blockState.setValue(TYPE,2),0); successfullyDyed = true; } else if(itemstack.getItem() == Items.GREEN_DYE){ level.setBlock(blockPos,blockState.setValue(TYPE,3),0); successfullyDyed = true; } else if(itemstack.getItem() == Items.BLUE_DYE){ level.setBlock(blockPos,blockState.setValue(TYPE,4),0); successfullyDyed = true; } else if(itemstack.getItem() == Items.PURPLE_DYE){ level.setBlock(blockPos,blockState.setValue(TYPE,5),0); successfullyDyed = true; } else{ player.displayClientMessage(Component.translatable("block.thingamajigs.lava_lamp.wrong_dye"), true); return InteractionResult.CONSUME; } // update THIS block, no matter what happens if(successfullyDyed == true){ level.updateNeighborsAt(blockPos,this); level.playSound(null, blockPos, SoundEvents.DYE_USE, SoundSource.BLOCKS, 1.0F, 1.0F); return InteractionResult.SUCCESS; } if(!player.isCreative()) { if (itemstack.getCount() > 1) { itemstack.setCount(itemstack.getCount() - 1); } else { itemstack.setCount(0); } } } } return InteractionResult.CONSUME; } Hey there, I was working on a block's 'use' method, however the behavior is not quite what I wanted. In-game, the block will flash to the desired state, then revert back to the state it was in previously, and won't actually update. I was wondering if perhaps I was updating the block wrong? The only state I am trying to update is an Integer value called 'TYPE' from 0-5 by using dyes.
  • Topics

  • Create New...

Important Information

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