To amplify on this a bit: If you look at your Project Properties dialog, you'll see a topic named "Builders". This is where the Builders for the project are managed. In a Java project, that will include the Java Builder. I have projects that also include a
Maven Builder. In fact, you can design and incorporate custom builders into Eclipse as plug-ins, but that's more work than most of us want to do.
The builders are responsible for ensuring that whatever resources they manage are properly built. The Java builder watches over Java source folders and ensures that classes are recompiled as needed.
As I said earlier, building is normally automatic, although you can switch to manual operation of the builders if the situation requires it.
Builders handle the everyday low-level aspects of working with a project and its products, but they're not intended to do everything. Which is why Eclipse also supports specialized builds using Maven and Ant.
The secret of how to be miserable is to constantly expect things are going to happen the way that they are "supposed" to happen.
You can have faith, which carries the understanding that you may be disappointed. Then there's being a willfully-blind idiot, which virtually guarantees it.