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)
======================================================================
- duplicates
-
JDK-4313429 Compiling <ClsName>.class expressions for CLDC leads to compiler internal error
-
- Closed
-