This is really simple and obvious but took me a while to work out. I had a maven project which Eclipse would open but one of the maven dependencies has a child of
The maven plugin couldn't find this dependency and as a result wouldn't build the project, show compilation errors or build unit tests.
It turns out that a recent java installation had changed the path environment variable to put
at the front of the PATH variable. The contents of this folder are shortcuts to the runtime (JRE) environment. This means that when I was starting Eclipse it was running a jre and not a jdk. Sorting out the PATH environment variable and moving the offending new entry to the end meant that I was using my own JAVA_PATH again which was pointing to the jdk. Restarting Eclipse then meant that the problem was sorted.