FULL PRODUCT VERSION :
C:\jcTest\64_jdk1.7.0_07\bin>javac -version
javac 1.7.0_07
C:\jcTest\64_jdk1.7.0_07\bin>java -version
java version "1.7.0_07"
Java(TM) SE Runtime Environment (build 1.7.0_07-b11)
Java HotSpot(TM) 64-Bit Server VM (build 23.3-b01, mixed mode)
ADDITIONAL OS VERSION INFORMATION :
C:\jcTest\64_jdk1.7.0_07\bin>ver
Microsoft Windows [Version 6.1.7601]
A DESCRIPTION OF THE PROBLEM :
I have two source files: Bug.java and BugAnnotation.java. The latter one is located in a jar (by it self) in the classpath and is referenced from Bug.java. When I try to compile Bug.java the following error occurs:
C:\jcTest\64_jdk1.7.0_07\bin>javac -cp BugAnnotation.jar Bug.java
Bug.java:18: error: cannot find symbol
@BugAnnotation
^
symbol: class BugAnnotation
location: class Bug
1 error
STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
Try to compile the given source file with the command javac -cp BugAnnotation.jar Bug.java
EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
The compilation is successful
ACTUAL -
See the description
ERROR MESSAGES/STACK TRACES THAT OCCUR :
C:\jcTest\64_jdk1.7.0_07\bin>javac -verbose -g -cp BugAnnotation.jar Bug.java
[parsing started RegularFileObject[Bug.java]]
[parsing completed 24ms]
[search path for source files: BugAnnotation.jar]
[search path for class files: C:\jcTest\64_jdk1.7.0_07\jre\lib\resources.jar,C:\jcTest\64_jdk1.7.0_07\jre\lib\rt.jar,C:\jcTest\64_jdk1.7.0_07\jre\lib\sunrsasign.jar,C:\jcTest\64_jdk1.7.0_07\jre\lib\jsse.jar,C:\jcTest\64_jdk1.7.0_07\jre\lib\jce.jar,C:\jcTest\64_jdk1.7.0_07\jre\lib\charsets.jar,C:\jcTest\64_jdk1.7.0_07\jre\lib\jfr.jar,C:\jcTest\64_jdk1.7.0_07\jre\classes,C:\jcTest\64_jdk1.7.0_07\jre\lib\ext\access-bridge-64.jar,C:\jcTest\64_jdk1.7.0_07\jre\lib\ext\dnsns.jar,C:\jcTest\64_jdk1.7.0_07\jre\lib\ext\jaccess.jar,C:\jcTest\64_jdk1.7.0_07\jre\lib\ext\localedata.jar,C:\jcTest\64_jdk1.7.0_07\jre\lib\ext\sunec.jar,C:\jcTest\64_jdk1.7.0_07\jre\lib\ext\sunjce_provider.jar,C:\jcTest\64_jdk1.7.0_07\jre\lib\ext\sunmscapi.jar,C:\jcTest\64_jdk1.7.0_07\jre\lib\ext\zipfs.jar,BugAnnotation.jar]
Bug.java:18: error: cannot find symbol
@BugAnnotation
^
symbol: class BugAnnotation
location: class Bug
[loading ZipFileIndexFileObject[C:\jcTest\64_jdk1.7.0_07\lib\ct.sym(META-INF/sym/rt.jar/java/lang/Object.class)]]
[loading ZipFileIndexFileObject[BugAnnotation.jar(bug/annotation/BugAnnotation.class)]]
[loading ZipFileIndexFileObject[C:\jcTest\64_jdk1.7.0_07\lib\ct.sym(META-INF/sym/rt.jar/java/lang/Enum.class)]]
[loading ZipFileIndexFileObject[C:\jcTest\64_jdk1.7.0_07\lib\ct.sym(META-INF/sym/rt.jar/java/lang/Comparable.class)]]
[loading ZipFileIndexFileObject[C:\jcTest\64_jdk1.7.0_07\lib\ct.sym(META-INF/sym/rt.jar/java/io/Serializable.class)]]
[loading ZipFileIndexFileObject[C:\jcTest\64_jdk1.7.0_07\lib\ct.sym(META-INF/sym/rt.jar/java/lang/String.class)]]
[loading ZipFileIndexFileObject[C:\jcTest\64_jdk1.7.0_07\lib\ct.sym(META-INF/sym/rt.jar/java/lang/annotation/Retention.class)]]
[loading ZipFileIndexFileObject[C:\jcTest\64_jdk1.7.0_07\lib\ct.sym(META-INF/sym/rt.jar/java/lang/annotation/RetentionPolicy.class)]]
[loading ZipFileIndexFileObject[C:\jcTest\64_jdk1.7.0_07\lib\ct.sym(META-INF/sym/rt.jar/java/lang/annotation/Target.class)]]
[loading ZipFileIndexFileObject[C:\jcTest\64_jdk1.7.0_07\lib\ct.sym(META-INF/sym/rt.jar/java/lang/annotation/ElementType.class)]]
[checking test.bug.Bug]
[loading ZipFileIndexFileObject[C:\jcTest\64_jdk1.7.0_07\lib\ct.sym(META-INF/sym/rt.jar/java/lang/AutoCloseable.class)]]
[loading ZipFileIndexFileObject[C:\jcTest\64_jdk1.7.0_07\lib\ct.sym(META-INF/sym/rt.jar/java/lang/CloneNotSupportedException.class)]]
[loading ZipFileIndexFileObject[C:\jcTest\64_jdk1.7.0_07\lib\ct.sym(META-INF/sym/rt.jar/java/lang/Class.class)]]
[total 436ms]
1 error
REPRODUCIBILITY :
This bug can be reproduced always.
---------- BEGIN SOURCE ----------
package test.bug;
import test.bug.Bug.Inner.InnerEnum;
import bug.annotation.BugAnnotation;
/**
* <ol>
* <li>The annotation needs to be in a jar in the classpath ("local" class path won't trigger the bug)</li>
* <li>The inner enum needs to be introduced as an import</li>
* <li>It appears as if the order of the imports plays some role here</li>
* </ol>
*
* @author pbloigu
*
*/
public class Bug {
@BugAnnotation
public static class Inner {
public static enum InnerEnum {
VAL1;
}
}
/**
* This is here only to warrant the import
*
* @param enumRef
*/
public static void reference(InnerEnum enumRef) {
}
}
package bug.annotation;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
/**
* @author pbloigu
*
*/
@Retention(RetentionPolicy.RUNTIME)
public @interface BugAnnotation {
}
---------- END SOURCE ----------
CUSTOMER SUBMITTED WORKAROUND :
Change the order of the imports in Bug.java. However, this is not an option when using Eclipse to automatically sort imports.
C:\jcTest\64_jdk1.7.0_07\bin>javac -version
javac 1.7.0_07
C:\jcTest\64_jdk1.7.0_07\bin>java -version
java version "1.7.0_07"
Java(TM) SE Runtime Environment (build 1.7.0_07-b11)
Java HotSpot(TM) 64-Bit Server VM (build 23.3-b01, mixed mode)
ADDITIONAL OS VERSION INFORMATION :
C:\jcTest\64_jdk1.7.0_07\bin>ver
Microsoft Windows [Version 6.1.7601]
A DESCRIPTION OF THE PROBLEM :
I have two source files: Bug.java and BugAnnotation.java. The latter one is located in a jar (by it self) in the classpath and is referenced from Bug.java. When I try to compile Bug.java the following error occurs:
C:\jcTest\64_jdk1.7.0_07\bin>javac -cp BugAnnotation.jar Bug.java
Bug.java:18: error: cannot find symbol
@BugAnnotation
^
symbol: class BugAnnotation
location: class Bug
1 error
STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
Try to compile the given source file with the command javac -cp BugAnnotation.jar Bug.java
EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
The compilation is successful
ACTUAL -
See the description
ERROR MESSAGES/STACK TRACES THAT OCCUR :
C:\jcTest\64_jdk1.7.0_07\bin>javac -verbose -g -cp BugAnnotation.jar Bug.java
[parsing started RegularFileObject[Bug.java]]
[parsing completed 24ms]
[search path for source files: BugAnnotation.jar]
[search path for class files: C:\jcTest\64_jdk1.7.0_07\jre\lib\resources.jar,C:\jcTest\64_jdk1.7.0_07\jre\lib\rt.jar,C:\jcTest\64_jdk1.7.0_07\jre\lib\sunrsasign.jar,C:\jcTest\64_jdk1.7.0_07\jre\lib\jsse.jar,C:\jcTest\64_jdk1.7.0_07\jre\lib\jce.jar,C:\jcTest\64_jdk1.7.0_07\jre\lib\charsets.jar,C:\jcTest\64_jdk1.7.0_07\jre\lib\jfr.jar,C:\jcTest\64_jdk1.7.0_07\jre\classes,C:\jcTest\64_jdk1.7.0_07\jre\lib\ext\access-bridge-64.jar,C:\jcTest\64_jdk1.7.0_07\jre\lib\ext\dnsns.jar,C:\jcTest\64_jdk1.7.0_07\jre\lib\ext\jaccess.jar,C:\jcTest\64_jdk1.7.0_07\jre\lib\ext\localedata.jar,C:\jcTest\64_jdk1.7.0_07\jre\lib\ext\sunec.jar,C:\jcTest\64_jdk1.7.0_07\jre\lib\ext\sunjce_provider.jar,C:\jcTest\64_jdk1.7.0_07\jre\lib\ext\sunmscapi.jar,C:\jcTest\64_jdk1.7.0_07\jre\lib\ext\zipfs.jar,BugAnnotation.jar]
Bug.java:18: error: cannot find symbol
@BugAnnotation
^
symbol: class BugAnnotation
location: class Bug
[loading ZipFileIndexFileObject[C:\jcTest\64_jdk1.7.0_07\lib\ct.sym(META-INF/sym/rt.jar/java/lang/Object.class)]]
[loading ZipFileIndexFileObject[BugAnnotation.jar(bug/annotation/BugAnnotation.class)]]
[loading ZipFileIndexFileObject[C:\jcTest\64_jdk1.7.0_07\lib\ct.sym(META-INF/sym/rt.jar/java/lang/Enum.class)]]
[loading ZipFileIndexFileObject[C:\jcTest\64_jdk1.7.0_07\lib\ct.sym(META-INF/sym/rt.jar/java/lang/Comparable.class)]]
[loading ZipFileIndexFileObject[C:\jcTest\64_jdk1.7.0_07\lib\ct.sym(META-INF/sym/rt.jar/java/io/Serializable.class)]]
[loading ZipFileIndexFileObject[C:\jcTest\64_jdk1.7.0_07\lib\ct.sym(META-INF/sym/rt.jar/java/lang/String.class)]]
[loading ZipFileIndexFileObject[C:\jcTest\64_jdk1.7.0_07\lib\ct.sym(META-INF/sym/rt.jar/java/lang/annotation/Retention.class)]]
[loading ZipFileIndexFileObject[C:\jcTest\64_jdk1.7.0_07\lib\ct.sym(META-INF/sym/rt.jar/java/lang/annotation/RetentionPolicy.class)]]
[loading ZipFileIndexFileObject[C:\jcTest\64_jdk1.7.0_07\lib\ct.sym(META-INF/sym/rt.jar/java/lang/annotation/Target.class)]]
[loading ZipFileIndexFileObject[C:\jcTest\64_jdk1.7.0_07\lib\ct.sym(META-INF/sym/rt.jar/java/lang/annotation/ElementType.class)]]
[checking test.bug.Bug]
[loading ZipFileIndexFileObject[C:\jcTest\64_jdk1.7.0_07\lib\ct.sym(META-INF/sym/rt.jar/java/lang/AutoCloseable.class)]]
[loading ZipFileIndexFileObject[C:\jcTest\64_jdk1.7.0_07\lib\ct.sym(META-INF/sym/rt.jar/java/lang/CloneNotSupportedException.class)]]
[loading ZipFileIndexFileObject[C:\jcTest\64_jdk1.7.0_07\lib\ct.sym(META-INF/sym/rt.jar/java/lang/Class.class)]]
[total 436ms]
1 error
REPRODUCIBILITY :
This bug can be reproduced always.
---------- BEGIN SOURCE ----------
package test.bug;
import test.bug.Bug.Inner.InnerEnum;
import bug.annotation.BugAnnotation;
/**
* <ol>
* <li>The annotation needs to be in a jar in the classpath ("local" class path won't trigger the bug)</li>
* <li>The inner enum needs to be introduced as an import</li>
* <li>It appears as if the order of the imports plays some role here</li>
* </ol>
*
* @author pbloigu
*
*/
public class Bug {
@BugAnnotation
public static class Inner {
public static enum InnerEnum {
VAL1;
}
}
/**
* This is here only to warrant the import
*
* @param enumRef
*/
public static void reference(InnerEnum enumRef) {
}
}
package bug.annotation;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
/**
* @author pbloigu
*
*/
@Retention(RetentionPolicy.RUNTIME)
public @interface BugAnnotation {
}
---------- END SOURCE ----------
CUSTOMER SUBMITTED WORKAROUND :
Change the order of the imports in Bug.java. However, this is not an option when using Eclipse to automatically sort imports.
- duplicates
-
JDK-7084633 static import fails to resolve interfaces on nested enums via import statements
-
- Closed
-