.java to binary compilation problem

Jeff Sturm jsturm@sigma6.com
Mon Nov 1 12:57:00 GMT 1999


Per Bothner wrote:
> 
> Jeff Sturm <jsturm@sigma6.com> writes:
> 
> > gcj seems to have trouble with ambiguous syntax, like member names vs.
> > subpackages.  Try shortening this to:
> >
> >   public boolean func() { Context.out.println( "Yo!"); }
> >
> > and use an explicit import:
> >
> >   import spec.harness.Context;
> >
> > Let us know if that compiles.
> 
> I hope not.  I'm fairly sure that is not valid Java.
> 
> Check 6.5.3.1 in the JLS.  It says "top-level package".
> "Context" is not a "top-level package".

I'm confused.  "Context" is a class name, not a package.  The
fully-qualified name is "spec.harness.Context".  I don't understand why
the package naming rules are relevant.

6.5.2 describes a recursive process to resolve contextually ambiguous
names.  It seems to say a statement like:

  java.lang.System.out.println(msg);

should compile.  Javac will compile it, gcj cannot.

Regardless of which is correct and which conforms to the JLS, a lot of
existing Java code does not compile under gcj because of this "feature".

-- 
Jeff Sturm
jsturm@sigma6.com


More information about the Java mailing list