-
Bug
-
Resolution: Duplicate
-
P3
-
None
-
6
-
generic
-
generic
Compiler throws unexpected NPE when the processor is invoked with testclass.java file.
Steps to reproduce:
1-> javac -cp /jdk/sol/392/jdk1.6.0/lib/tools.jar:. sampleAP.java
2-> javac -processor sampleAP -proc:only testclass.java
bash-2.05$ /jdk/sol/392/jdk1.6.0/bin/javac -J-version
java version "1.6.0-auto"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.6.0-auto-316)
Java HotSpot(TM) Client VM (build 1.6.0-rc-b60, mixed mode)
*-*-*-*-*-*-*-
<Error>
An annotation processor threw an uncaught exception.
Consult the following stack trace for details.
java.lang.NullPointerException
at sampleAP$testVisitor.visitType(sampleAP.java:32)
at sampleAP$testVisitor.visitType(sampleAP.java:26)
at com.sun.tools.javac.code.Symbol$ClassSymbol.accept(Symbol.java:806)
at sampleAP.process(sampleAP.java:52)
at com.sun.tools.javac.processing.JavacProcessingEnvironment.callProcessor(JavacProcessingEnvironment.java:499)
at com.sun.tools.javac.processing.JavacProcessingEnvironment.discovery(JavacProcessingEnvironment.java:423)
at com.sun.tools.javac.processing.JavacProcessingEnvironment.doProcessing(JavacProcessingEnvironment.java:572)
at com.sun.tools.javac.main.JavaCompiler.processAnnotations(JavaCompiler.java:844)
at com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:629)
at com.sun.tools.javac.main.Main.compile(Main.java:761)
at com.sun.tools.javac.main.Main.compile(Main.java:686)
at com.sun.tools.javac.main.Main.compile(Main.java:675)
at com.sun.tools.javac.Main.compile(Main.java:70)
at com.sun.tools.javac.Main.main(Main.java:55)
</Error>
*-*-*-*-*-*-*-
<sampleAP.java>
import javax.annotation.*;
import javax.annotation.processing.*;
import javax.lang.model.*;
import javax.lang.model.element.*;
import javax.lang.model.type.*;
import javax.lang.model.util .*;
import static javax.lang.model.util.ElementFilter.*;
import java.util.*;
import java.io.*;
@SupportedAnnotationTypes({"*"})
@SupportedOptions({"-verbose"})
public class sampleAP extends AbstractProcessor {
private ProcessingEnvironment penv;
public void init(ProcessingEnvironment env) {
this.penv = env;
}
static class testVisitor extends SimpleElementVisitor6<Boolean,Void> {
public Boolean visitType(TypeElement exe, Void v) {
System.out.println(exe.getSimpleName()) ;
List<? extends ExecutableElement> md = methodsIn(exe.getEnclosedElements());
for (ExecutableElement d : md) {
System.out.println( d.getReturnType().toString() + " " +
d.getSimpleName() + "() = " + d.getDefaultValue().toString() );
}
return true;
}//visitType
}//testVisitor
public boolean process(Set<? extends TypeElement> tes, RoundEnvironment renv) {
testVisitor tav = new testVisitor();
for (TypeElement typeEle : renv.getSpecifiedTypeElements()) {
System.out.println("PROCESSING: " + typeEle.getQualifiedName());
typeEle.accept(tav, null);
}
return true;
}
}
</sampleAP.java>
*-*-*-*-*-*-*-
<testclass.java>
public class testclass {
String S = null;
int I = 5;
public testclass() { S= "";}
public testclass( String s) { S = new String(s); }
public void foo() {}
public String getString() { return S; }
public int getInt() { return I; }
void takesparms(String s, int i, testclass tc) {}
class iClass {
public iClass(){}
public void icFoo() {}
}
}
</testclass.java>
Supplied the testclass.java and sampleAP.java files as attachment.
Steps to reproduce:
1-> javac -cp /jdk/sol/392/jdk1.6.0/lib/tools.jar:. sampleAP.java
2-> javac -processor sampleAP -proc:only testclass.java
bash-2.05$ /jdk/sol/392/jdk1.6.0/bin/javac -J-version
java version "1.6.0-auto"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.6.0-auto-316)
Java HotSpot(TM) Client VM (build 1.6.0-rc-b60, mixed mode)
*-*-*-*-*-*-*-
<Error>
An annotation processor threw an uncaught exception.
Consult the following stack trace for details.
java.lang.NullPointerException
at sampleAP$testVisitor.visitType(sampleAP.java:32)
at sampleAP$testVisitor.visitType(sampleAP.java:26)
at com.sun.tools.javac.code.Symbol$ClassSymbol.accept(Symbol.java:806)
at sampleAP.process(sampleAP.java:52)
at com.sun.tools.javac.processing.JavacProcessingEnvironment.callProcessor(JavacProcessingEnvironment.java:499)
at com.sun.tools.javac.processing.JavacProcessingEnvironment.discovery(JavacProcessingEnvironment.java:423)
at com.sun.tools.javac.processing.JavacProcessingEnvironment.doProcessing(JavacProcessingEnvironment.java:572)
at com.sun.tools.javac.main.JavaCompiler.processAnnotations(JavaCompiler.java:844)
at com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:629)
at com.sun.tools.javac.main.Main.compile(Main.java:761)
at com.sun.tools.javac.main.Main.compile(Main.java:686)
at com.sun.tools.javac.main.Main.compile(Main.java:675)
at com.sun.tools.javac.Main.compile(Main.java:70)
at com.sun.tools.javac.Main.main(Main.java:55)
</Error>
*-*-*-*-*-*-*-
<sampleAP.java>
import javax.annotation.*;
import javax.annotation.processing.*;
import javax.lang.model.*;
import javax.lang.model.element.*;
import javax.lang.model.type.*;
import javax.lang.model.util .*;
import static javax.lang.model.util.ElementFilter.*;
import java.util.*;
import java.io.*;
@SupportedAnnotationTypes({"*"})
@SupportedOptions({"-verbose"})
public class sampleAP extends AbstractProcessor {
private ProcessingEnvironment penv;
public void init(ProcessingEnvironment env) {
this.penv = env;
}
static class testVisitor extends SimpleElementVisitor6<Boolean,Void> {
public Boolean visitType(TypeElement exe, Void v) {
System.out.println(exe.getSimpleName()) ;
List<? extends ExecutableElement> md = methodsIn(exe.getEnclosedElements());
for (ExecutableElement d : md) {
System.out.println( d.getReturnType().toString() + " " +
d.getSimpleName() + "() = " + d.getDefaultValue().toString() );
}
return true;
}//visitType
}//testVisitor
public boolean process(Set<? extends TypeElement> tes, RoundEnvironment renv) {
testVisitor tav = new testVisitor();
for (TypeElement typeEle : renv.getSpecifiedTypeElements()) {
System.out.println("PROCESSING: " + typeEle.getQualifiedName());
typeEle.accept(tav, null);
}
return true;
}
}
</sampleAP.java>
*-*-*-*-*-*-*-
<testclass.java>
public class testclass {
String S = null;
int I = 5;
public testclass() { S= "";}
public testclass( String s) { S = new String(s); }
public void foo() {}
public String getString() { return S; }
public int getInt() { return I; }
void takesparms(String s, int i, testclass tc) {}
class iClass {
public iClass(){}
public void icFoo() {}
}
}
</testclass.java>
Supplied the testclass.java and sampleAP.java files as attachment.
- duplicates
-
JDK-6351124 JSR269: The javac Null Pointer Exception when getDefaultValue() operates with methods
-
- Closed
-