Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-7198878

Annotation import not recognized

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Duplicate
    • Icon: P4 P4
    • None
    • 7
    • tools
    • x86
    • windows_7

      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.

            Unassigned Unassigned
            webbuggrp Webbug Group
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

              Created:
              Updated:
              Resolved:
              Imported:
              Indexed: