Yes, that was it. When I duplicated a different project, it still referred to that old project under "Refresh Policy". I had deleted that reference when I went through the project properties, but had neglected to create a new reference to the new project. When I added that reference, it only took one more recompile and then everything settled down.
The reason I hadn't added a new reference is that I really had no idea what "Refresh Policy" meant. What does it mean to "refresh a resource"? Compared to other IDEs, like Visual Studio, or the old pre-Eclipse CodeWarrior, Eclipse is about 80% incomprehensible stuff that you have to be a guru to understand. All I now know about "Refresh Policy" is that it fixes this problem. I still don't know what "refreshing" actually does. The help file has a page on the "Builder Settings" tab and the "Behaviour" tab, but not on the "Refresh Policy" tab. But I guess that's a complaint for the Eclipse.org forums.
I don't know why it should be necessary to tell a project to refresh itself. If refreshing is something that is needed to make things work, that should be automatic. The dialog box should only be necessary to specify other non-default things that might need to be refreshed, that Eclipse can't know about. But I guess that's a complaint for the Eclipse.org forums, too.