|
Blocks :
|
|
|
Blocks :
|
|
|
Duplicate :
|
|
|
Duplicate :
|
|
|
Duplicate :
|
|
|
Duplicate :
|
|
|
Duplicate :
|
|
|
Duplicate :
|
|
|
Duplicate :
|
|
|
Duplicate :
|
|
|
Duplicate :
|
|
|
Relates :
|
|
|
Relates :
|
|
|
Relates :
|
FULL PRODUCT VERSION :
java version "1.7.0"
Java(TM) SE Runtime Environment (build 1.7.0-b147)
Java HosSpot(TM) Server VM (build 21.0-b17, mixed mode))
ADDITIONAL OS VERSION INFORMATION :
Linux Computer 2.6.38-11-generic #50-Ubuntu SMP Mon Sep 12 :21:18_14 UTC 2011 i686 i686 i386 GNU/Linux
A DESCRIPTION OF THE PROBLEM :
In some situations the order of imports in a class may be imported to let javac
compile all classes:
Let X be a class having an inner class X_1 extending some class Y in a
different package. If a subtype of X_1 have to be imported (e.g. it has
another inner class which is referenced) and it is imported before Y is
imported, then X_1 is not compiled.
STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
Create Z.java in package z with content:
{{{
package z;
public class Z{}
}}}
Create A.java in package a with content:
{{{
package a;
import a.A.B.C;
import z.Z;
public class A {
class B extends Z {
class C {}
}
class D {
Class foo() {
return C.class;
}
}
}
}}}
try to run: javac a/A.java
EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
A compiles without problems.
ACTUAL -
A does not compile
ERROR MESSAGES/STACK TRACES THAT OCCUR :
a/A.java:5 error: cannot find symbol
class B extends Z {
^
symbol: class Z
location: class A
1 error
REPRODUCIBILITY :
This bug can be reproduced always.
CUSTOMER SUBMITTED WORKAROUND :
Reorder the imports or do not nest the classes.
|