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

Class literals are compiled into code which conflicts with CLDC exceptions

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Duplicate
    • Icon: P3 P3
    • None
    • 1.3.0
    • tools
    • sparc
    • solaris_2.5.1



      Name: hk112284 Date: 05/29/2001


      When compiling a java source file that uses the "class literal"
      syntax (e.g. className.class), the javac compiler (both the jdk1.2.2
      and the jdk1.3 versions) inserts some <clinit> code that includes a
      reference to the java.lang.NoClassDefFoundError class.

      This causes a problem when I set the bootclasspath to refer to the
      j2me_cldc classes which do not include the java.lang.NoClassDefFoundError class.

      Is there a compiler switch or other mechanism to direct the javac compiler to a
      different error/exception that exists in the j2me_cldc classes
      (e.g. another -target type such as -target cldc)?

      The following code demonstrates the problem

      public class MyTestClass {

        static final String MYTESTCLASS_PREFIX = MyTestClass.class.getName();

        public static void main( String[] args ) {
          System.out.println( "My test classes prefix is : " + MYTESTCLASS_PREFIX );
        }

      }


      ----------------

      The above class is compiled as listed below (except each compiler option is
      placed indented on a separate line for clarity).
      \jdk1.2.2\bin\javac
         -target 1.1
         -bootclasspath c:\j2me_cldc\bin\api\classes
         -extdirs ""
         -classpath . MyTestClass.java
      MyTestClass.java:5: Class java.lang.NoClassDefFoundError not found in java.lang.Class
      class$(java.lang.String).
      public class MyTestClass {
                   ^
      1 error

      ---------------

      When using the jdk1.3 compiler the problem also occurs, but it results in a compiler
      crash as shown below

      \jdk1.3\bin\javac
         -target 1.1
         -bootclasspath c:\j2me_cldc\bin\api\classes
         -extdirs ""
         -classpath . MyTestClass.java
      An exception has occurred in the compiler (1.3.0). Please file a bug at the Java Developer
      Connection
      (http://java.sun.com/cgi-bin/bugreport.cgi). Include your program and the following diagnostic
      in your report. Thank
      you.
      com.sun.tools.javac.v8.code.Symbol$CompletionFailure: file java\lang\NoClassDefFoundError.class
      not found
              at com.sun.tools.javac.v8.code.ClassReader.fillIn(ClassReader.java:997)
              at com.sun.tools.javac.v8.code.ClassReader.complete(ClassReader.java:952)
              at com.sun.tools.javac.v8.code.Symbol.complete(Symbol.java:366)
              at com.sun.tools.javac.v8.code.Symbol$ClassSymbol.flags(Symbol.java:578)
              at com.sun.tools.javac.v8.comp.Resolve.findMethod(Resolve.java:367)
              at com.sun.tools.javac.v8.comp.Resolve.resolveQualifiedMethod(Resolve.java:808)
              at com.sun.tools.javac.v8.comp.Resolve.resolveConstructor(Resolve.java:827)
              at com.sun.tools.javac.v8.comp.TransInner.makeNewClass(TransInner.java:239)
              at com.sun.tools.javac.v8.comp.TransInner.classDollarSym(TransInner.java:1198)
              at com.sun.tools.javac.v8.comp.TransInner.classOf(TransInner.java:1291)
              at com.sun.tools.javac.v8.comp.TransInner._case(TransInner.java:1554)
              at com.sun.tools.javac.v8.tree.Tree$Select.visit(Tree.java:963)
              at com.sun.tools.javac.v8.tree.TreeTranslator.translate(TreeTranslator.java:35)
              at com.sun.tools.javac.v8.comp.TransInner._case(TransInner.java:1552)
              at com.sun.tools.javac.v8.tree.Tree$Select.visit(Tree.java:963)
              at com.sun.tools.javac.v8.tree.TreeTranslator.translate(TreeTranslator.java:35)
              at com.sun.tools.javac.v8.comp.TransInner._case(TransInner.java:1485)
              at com.sun.tools.javac.v8.tree.Tree$Apply.visit(Tree.java:785)
              at com.sun.tools.javac.v8.tree.TreeTranslator.translate(TreeTranslator.java:35)
              at com.sun.tools.javac.v8.tree.TreeTranslator._case(TreeTranslator.java:106)
              at com.sun.tools.javac.v8.tree.Tree$VarDef.visit(Tree.java:470)
              at com.sun.tools.javac.v8.tree.TreeTranslator.translate(TreeTranslator.java:35)
              at com.sun.tools.javac.v8.comp.TransInner._case(TransInner.java:1355)
              at com.sun.tools.javac.v8.tree.Tree$ClassDef.visit(Tree.java:402)
              at com.sun.tools.javac.v8.tree.TreeTranslator.translate(TreeTranslator.java:35)
              at com.sun.tools.javac.v8.comp.TransInner.translate(TransInner.java:1317)
              at com.sun.tools.javac.v8.comp.TransInner.translateTopLevelClass(TransInner.java:1583)
              at com.sun.tools.javac.v8.JavaCompiler.compile(JavaCompiler.java:397)
              at com.sun.tools.javac.v8.Main.compile(Main.java:247)
              at com.sun.tools.javac.Main.main(Main.java:16)
      (Review ID: 120686)
      ======================================================================

            gafter Neal Gafter (Inactive)
            hekalsi Hema Kalsi (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

              Created:
              Updated:
              Resolved:
              Imported:
              Indexed: