I am using SublimeJava and it's working great for me except one tiny thing. When I have a custom class and make changes to it, those changes are only reflected when I restart SublimeText. For example, if I change doStuff() to doStuff2 in the example below, SublimeJava autocomplete holds on to doStuff and fails to see doStuff2 until I restart

There shouldn't be any caching and if there is it's a bug. BUT the completion lookup is done via java's reflection api so you need to compile your changed java sources so that the reflection api knows about the change. If after you've compiled the source code it's still giving you the wrong completion, please open up an issue on github with more details and I'll take a look.