<p>I'm using start.jar and stop.jar to stop and start my jetty instance.
I restart by calling stop.jar, then start.jar.
The problem is, if I don't sleep long enough between stop.jar and start.jar I start getting these random ClassNotFoundExceptions and the application doesn't work correctly.</p>

<p>Sleeping for a longer period of time between stop and start is my current option.</p>

<p>I also heard from someone that I should have something that manages my threads so that I end those before jetty finishes.
Is this correct? The question I have about this is that stop.jar returns immediately, so it doesn't seem to help me, unless there's something I'm missing.
Another option might be to poll the log file, but that's pretty ugly.</p>

<p>What's the best way of restarting jetty?</p>

<p>Gilbert: The Ant task is definitely not a bad way of doing it.  However, it sleeps for a set amount of time, which is exactly what I'm trying to avoid.</p>

Did you try JFGI?
Setting up Ant task that could do the work for you?
This blog post details how to setup targets that can start and stop jetty for you. You could easily cobble together another target called 'jetty-restart' which depends on 'jetty-stop' and then calls 'jetty-start'.
http://ptrthomas.wordpress.com/2006/10/10/how-to-start-and-stop-jetty-from-ant/