JastAdd is a good source level analyzer (and much more).
However, you may prefer to work at the bytecode level. It is simpler, faster, provides all the requested information, works without a source (obviously) and with other languages based on the JVM. Soot or ASM is a good choice for this.
UPDATED
Of course, with bytecode you cannot really do refactoring at the source level (although you can modify the bytecode).
For completeness, you can combine both approaches.
source share