Community
Participate
Working Groups
Build 20020601 Building my self-hosting workspace failed with the following maker on org.eclipse.jdt.core.tests: The project was not built since its classpath is incomplete. Can not find the class file for org.eclipse.jdt.core.jdom.IDOMInitializer. Fix the classpath then try rebuilding this project
Created attachment 1165 [details] Builder trace
Rebuilding all fixed the problem.
Major incremental recompilation mode (PDE import all but jdtcore and tests), and hit BUILD instead of full build... I am questioning why we even try an incremental recompile where prerequisites have done full builds... everything is claimed to have structurally changed upstream.
Just because one or more prereq projects did full builds does not mean that all source files in a project need to be rebuilt... full builds also eliminate the .class file comparison so every .class file appears changed. If you do a full-build of a project A, all of its dependent projects will see all of its .class files as changed but should not produce any new files for their dependents.
As far as the actual PR, I have not been able to reproduce...
Jerome: How did you build your workspace? Did you add the binary projects first? When did you invoke a build (Crtl-B)? From the trace it looks like jdt.core & jdt.core.tests knew build states... that's why they tried incremental builds first BUT there is no way they would have built successfully without all the binary projects in the workspace. I've tried different orders... and done builds at different times... but have yet to see any error.
Ok, I can reproduce the trace by 'upgrading' the binary projects in an existing workspace, but it still does not reproduce the error... it works fine. If we think incremental builds are failing because of 'changed' jar files, we could avoid looking into each delta until we know that there are no changed jar files or added/removed binary folders, but I'm not convinced it takes that long to examine a delta... the log is just long.
From what I recall, I had a 20020531 self-hosting workspace that was built. I upgraded this workspace by importing all binary projects over the existing ones. I then exited the workspace, restarted it and pressed build.
This really makes no sense... both jdt.core & jdt.core.tests aborted their incremental builds and did full builds. It was a full build which failed to find the .class file... but Jerome said a subsequent full build found it. The log for the full build for jdt.core includes writing the .class file for IDOMInitializer. The log for the incremental build of jdt.core.tests (which is aborted soon after for a full build) lists that dependents of IDOMInitializer.class are to be rebuilt. Closing for now since its not reproduceable...