If JRebel doesn't work with your application or container it is most probably due to some custom classloaders that don't behave as we expect them to. You need to determine the class name of the classloader in question. The easiest way to do it is put the following line in any class that will be loaded by that classloader (e.g. in a web application case it could be a servlet class):

System.out.println(getClass().getClassLoader().getClass().getName());

This will print the name of the classloader class right out to the console. Let's assume the name was "com.acme.CustomClassLoader". In that case all we need to do is pass it to the JRebel agent like this:

-javaagent:$AGENT_PATH_UNIX=com.acme.CustomClassLoader

Sometimes there could be several different custom classloaders and in such a case a comma-separated syntax should be used:

-javaagent:$AGENT_PATH_UNIX=com.acme.CustomClassLoader1,com.acme.CustomClassLoader2,...

This should get most of the custom classloaders to work.