Here is a narrowed down test case:
frog:~/workspaces/test/falsecycle $ cat -n DefaultFocusManager.java
1 class DefaultFocusManager extends FocusManager {}
frog:~/workspaces/test/falsecycle $ cat -n FocusManager.java
1 class FocusManager {}
2
3 class DelegatingDefaultFocusManager extends DefaultFocusManager {}
frog:~/workspaces/test/falsecycle $ /usr/java/bin/javac DefaultFocusManager.java
./FocusManager.java:3: cyclic inheritance involving DefaultFocusManager
class DelegatingDefaultFocusManager extends DefaultFocusManager {}
^
1 error
frog:~/workspaces/test/falsecycle $
###@###.### 2001-10-08
============================================================================================
Here is the failure we encountered on a completely fresh bringover:
../../../src/share/classes/javax/swing/FocusManager.java:137: cyclic inheritance involving javax.swing.DefaultFocusManager
final class DelegatingDefaultFocusManager extends DefaultFocusManager {
^
../../../src/share/classes/javax/swing/FocusManager.java:64: incompatible types
found : javax.swing.DelegatingDefaultFocusManager
required: javax.swing.FocusManager
return new DelegatingDefaultFocusManager(manager);
^
../../../src/share/classes/javax/swing/FocusManager.java:99: inconvertible types
found : javax.swing.FocusManager
required: javax.swing.DelegatingDefaultFocusManager
(aFocusManager instanceof DelegatingDefaultFocusManager)
^
../../../src/share/classes/javax/swing/FocusManager.java:100: inconvertible types
found : javax.swing.FocusManager
required: javax.swing.DelegatingDefaultFocusManager
? ((DelegatingDefaultFocusManager)aFocusManager).getDelegate()
^
../../../src/share/classes/javax/swing/FocusManager.java:142: cannot resolve symbol
symbol : variable gluePolicy
location: class javax.swing.DelegatingDefaultFocusManager
setDefaultFocusTraversalPolicy(gluePolicy);
^
Note: Some input files use or override a deprecated API.
Note: Recompile with -deprecation for details.
5 errors
gnumake[2]: *** [.compile.classlist] Error 1
gnumake[2]: Leaving directory `/export/disk03/awt/nightly/build-ws/make/java/awt'
gnumake[1]: *** [all] Error 1
gnumake[1]: Leaving directory `/export/disk03/awt/nightly/build-ws/make/java'
gnumake: *** [all] Error 1
The output of the build is in
/net/jano/export/disk03/awt/nightly/inherit-work/buildoutput1
This workspace is a snapshot of the AWT workspace. It is somewhere
between merlin build 68 and merlin build 69.
How to reproduce:
There is a workspace prepared at:
/net/jano/export/disk03/awt/nightly/inherit-work
cd /inherit-work/build/solaris-sparc/classes/java/awt
rm *.class
cd /inherit-work/make/java/awt
gnumake all
---> build fails as above
You could try to comment out lines from java_awt.jmk in
/make/minclude/java_awt.jmk to attempt to narrow it down to particular classes.
Simply doing
cd /inherit-work/build/solaris-sparc/classes/java/awt
rm *ocus*
and then doing an incremental build isn't enough to cause the failure.
This is about as minimal a procedure as I could come up with to reproduce it.
The incremental build fails in a few seconds: see
/inherit-work/buildoutput2
for the output of an incremental build as described above.
Here is the inheritance tree:
java.awt.KeyboardFocusManager
|
java.awt.DefaultKeyboardFocusManager
|
javax.swing.FocusManager
|
javax.swing.DefaultFocusManager
|
javax.swing.DelegatingDefaultFocusManager
Note: We think the build succeeds if you simply restart it again
after the failure.
Note: the problem seems to be related to the fact that the class
javax.swing.DelegatingDefaultFocusManager is located in the same file as
javax.swing.FocusManager. When we put javax.swing.DelegatingDefaultFocusManager
into its own file, the problem disappeared.