In the constructor of a member class, GCJ does not allow you to do a 'super' call with an argument that calls an instance method of the enclosing class. For example, GCJ rejects this perfectly valid class: --- outer.java --- public class outer { private String name; public outer (String name) { this.name = name; } public String getID() { return name; } public class inner extends Thread { public inner() { super ("thread-" + getID()); } } } --- outer.java --- This is valid because the call to 'getID()' is referencing the 'this' from the enclosing class. GCJ also rejects 'outer.this.getID()' in this example, so there does not appear to be a workaround. GCJ fails with: outer.java: In class `outer$inner': outer.java: In constructor `(outer)': outer.java:19: error: Can't reference `this' before the superclass constructor has been called. super ("thread-" + outer.this.getID()); ^ 1 error Tested on: gcj (GCC) 3.4.2 gcj (GCC) 4.0.0 20041025 (experimental)
*** This bug has been marked as a duplicate of 4695 ***