Community
Participate
Working Groups
when we remove a method from an abstract class with several abstract base classes other classes calling that method are neither marked in package explorer, nor are their errors shown in the problems view, however, opening such a class will at least underline the call as error only upon full clean build do package explorer and problems view pick up the errors it also fails the other way around - upon reverting the change, package explorer and problems view still show errors it is disturbing that existing methods are reported as undefined and vice versa
Is "Build Automatically" enabled? Does it happen between classes of the same project or only if project dependencies are involved? If the latter, what dependency management is used (plain Java projects? Maven? PDE?).
Yes, "Build Automatically" is enabled - we deliberately have put it in the Oomph setup, so it gets enabled on every Eclipse startup if it happened to be disabled manually. Workspace preference is refresh on access, however, refreshing using native hooks does not make any difference either. Hmm, I'm not sure, whether it only happens cross project boundaries. I'll have to check this more thoroughly before I can give a definite answer. What I can tell, is that I observed it happening cross plugin project boundaries. Most of our projects have PluginNature, i.e. they are OSGi bundles built by PDE. Only few are plain Java projects. I'll have to check, whether they can get affected, too.
For the calling class it, does not make any difference, whether it is located in a plain Java or a PDE plugin project. The other way around, naturally does not apply anyway, i.e. we never consume methods defined in our plain Java projects from within the plugin projects. Furthermore, I can confirm, that this issue happens cross project boundaries only, i.e. callers inside same project are always in sync immediately. Ok, and I've to correct myself - a full clean is not needed. It's good enough to clean affected projects. Cleaning a single affected project will only put that single project in sync.
Moving to PDE for comments, since apparently we have trouble with change notification across a PDE based classpath either getting out of sync or not sending necessary deltas (or those deltas not getting processed by JDT). @Vikas, have you heard of / seen issues like this before? @Joerg: thanks for the info so far. More questions: Does the Error log contain any entries from the time when the problem occurs? Are other plugins active that could possibly modify content in output folder (bin/ or such)? E.g., more builders in addition to JDT and PDE?
@Stephan: Thanks for addressing. Your questions are catalytic ;-) There are no entries in the errors log around the time, when I reproduced this. However, the central project related to this issue has an AspectJ nature + builder active: - org.eclipse.ajdt.core.ajbuilder - org.eclipse.ajdt.ui.ajnature When I remove the aspectJ capability, the issue cannot be reproduced anymore. Even after re-enabling it later. Note, though, that our whole team was affected by this, so I think it definitely was not some sort of random Heisenbug. And I somewhat expect it to maybe come back later ... Please, also note that another team member was able to workaround this issue by refactoring said abstract class into a concrete base class.
On to AJDT then :) I'm sure the AspectJ builder needs to participate in determining what needs rebuilding when, so there might be a bug in that part?
maybe a duplicate of bug 405299
possibly related forum thread: https://www.eclipse.org/forums/index.php/m/898891/?srch=error+marker#msg_898891