-
Bug
-
Resolution: Unresolved
-
P4
-
11, 17, 21
ADDITIONAL SYSTEM INFORMATION :
Microsoft Windows 10 10.0.19045
java version "17.0.10" 2024-01-16 LTS
Java(TM) SE Runtime Environment (build 17.0.10+11-LTS-240)
Java HotSpot(TM) 64-Bit Server VM (build 17.0.10+11-LTS-240, mixed mode, sharing)
A DESCRIPTION OF THE PROBLEM :
When I used JavaAgent to fuzz the jar package, I found that if there is an org.projectlombok dependency (1.18.30) in the JavaAgent, and the JavaFileManager parameter of the JavaCompiler in the target jar package is some specific content, a java.lang.AssertionError will be raised at jdk.compiler/com.sun.tools.javac.parser.JavacParser.accept
In my fuzzing test, when the String s content in the main function below has 50 '?' or 50 '(', this bug will be triggered.
STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
I put the code that generates the bug below
1. Use Maven to compile JavaAgent and generate the target jar package containing the Main class
2. java -javaagent:bug-1.0-SNAPSHOT.jar -jar D:/xxx/bugTest/out/artifacts/bugTest_jar/bugTest.jar
EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
No error reported
ACTUAL -
An exception has occurred in the compiler (17.0.10). Please file a bug against the Java compiler via the Java bug reporting page (http://bugreport.java.com) after checking the Bug Database (http://bugs.java.com) for duplicates. Include your program, the following diagnostic, and the parameters passed to the Java compiler in your report. Thank you.
java.lang.AssertionError
at jdk.compiler/com.sun.tools.javac.util.Assert.error(Assert.java:155)
at jdk.compiler/com.sun.tools.javac.util.Assert.check(Assert.java:46)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.reportSyntaxError(JavacParser.java:449)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.reportSyntaxError(JavacParser.java:430)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.accept(JavacParser.java:471)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.accept(JavacParser.java:460)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:916)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:836)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.blockStatement(JavacParser.java:2730)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.blockStatements(JavacParser.java:2569)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.block(JavacParser.java:2539)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.block(JavacParser.java:2553)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.methodDeclaratorRest(JavacParser.java:4477)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.classOrInterfaceOrRecordBodyDeclaration(JavacParser.java:4334)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.classInterfaceOrRecordBody(JavacParser.java:4217)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.classDeclaration(JavacParser.java:3926)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.classOrRecordOrInterfaceOrEnumDeclaration(JavacParser.java:3867)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.typeDeclaration(JavacParser.java:3856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.parseCompilationUnit(JavacParser.java:3700)
at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.parse(JavaCompiler.java:620)
at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.parse(JavaCompiler.java:657)
at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.parseFiles(JavaCompiler.java:1006)
at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.parseFiles(JavaCompiler.java:993)
at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:919)
at jdk.compiler/com.sun.tools.javac.api.JavacTaskImpl.lambda$doCall$0(JavacTaskImpl.java:104)
at jdk.compiler/com.sun.tools.javac.api.JavacTaskImpl.invocationHelper(JavacTaskImpl.java:152)
at jdk.compiler/com.sun.tools.javac.api.JavacTaskImpl.doCall(JavacTaskImpl.java:100)
at jdk.compiler/com.sun.tools.javac.api.JavacTaskImpl.call(JavacTaskImpl.java:94)
at Main.main(Main.java:31)
---------- BEGIN SOURCE ----------
* JavaAgent code:
import java.lang.instrument.Instrumentation;
public class Premain {
public static void premain(String agentArgs, Instrumentation instrumentation){
}
}
* JavaAgent Maven:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.example</groupId>
<artifactId>bug</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
</properties>
<dependencies>
<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.30</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.2.4</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<transformers>
<transformer
implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<manifestEntries>
<Premain-Class>Premain</Premain-Class>
<Can-Redefine-Classes>true</Can-Redefine-Classes>
<Can-Retransform-Classes>true</Can-Retransform-Classes>
</manifestEntries>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
* target Java code:
import javax.tools.*;
import java.io.IOException;
import java.net.URI;
import java.util.Arrays;
public class Main {
public static SimpleJavaFileObject getJavaFileContentsAsString(String s) {
StringBuilder javaFileContents =
new StringBuilder(
"import java.sql.*; public class TestClass { static String DBUSER; static String DBPW;"
+ " static String DBURL; public static void main(String[] args) {"
+ s
+ "}}");
JavaObjectFromString javaFileObject = null;
try {
javaFileObject = new JavaObjectFromString("TestClass.java", javaFileContents.toString());
} catch (Exception exception) {
exception.printStackTrace();
}
return javaFileObject;
}
public static void main(String[] args) throws Exception {
String s = "??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????";
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
DiagnosticCollector diagnosticsCollector = new DiagnosticCollector();
StandardJavaFileManager fileManager = compiler.getStandardFileManager(diagnosticsCollector, null, null);
JavaFileObject javaObjectFromString = getJavaFileContentsAsString(s);
Iterable fileObjects = Arrays.asList(javaObjectFromString);
JavaCompiler.CompilationTask task = compiler.getTask(null, fileManager, diagnosticsCollector, null, null, fileObjects);
Boolean result = task.call();
}
}
class JavaObjectFromString extends SimpleJavaFileObject {
private String contents = null;
public JavaObjectFromString(String className, String contents) throws Exception {
super(new URI(className), Kind.SOURCE);
this.contents = contents;
}
public CharSequence getCharContent(boolean ignoreEncodingErrors) throws IOException {
return contents;
}
}
---------- END SOURCE ----------
FREQUENCY : always
Microsoft Windows 10 10.0.19045
java version "17.0.10" 2024-01-16 LTS
Java(TM) SE Runtime Environment (build 17.0.10+11-LTS-240)
Java HotSpot(TM) 64-Bit Server VM (build 17.0.10+11-LTS-240, mixed mode, sharing)
A DESCRIPTION OF THE PROBLEM :
When I used JavaAgent to fuzz the jar package, I found that if there is an org.projectlombok dependency (1.18.30) in the JavaAgent, and the JavaFileManager parameter of the JavaCompiler in the target jar package is some specific content, a java.lang.AssertionError will be raised at jdk.compiler/com.sun.tools.javac.parser.JavacParser.accept
In my fuzzing test, when the String s content in the main function below has 50 '?' or 50 '(', this bug will be triggered.
STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
I put the code that generates the bug below
1. Use Maven to compile JavaAgent and generate the target jar package containing the Main class
2. java -javaagent:bug-1.0-SNAPSHOT.jar -jar D:/xxx/bugTest/out/artifacts/bugTest_jar/bugTest.jar
EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
No error reported
ACTUAL -
An exception has occurred in the compiler (17.0.10). Please file a bug against the Java compiler via the Java bug reporting page (http://bugreport.java.com) after checking the Bug Database (http://bugs.java.com) for duplicates. Include your program, the following diagnostic, and the parameters passed to the Java compiler in your report. Thank you.
java.lang.AssertionError
at jdk.compiler/com.sun.tools.javac.util.Assert.error(Assert.java:155)
at jdk.compiler/com.sun.tools.javac.util.Assert.check(Assert.java:46)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.reportSyntaxError(JavacParser.java:449)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.reportSyntaxError(JavacParser.java:430)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.accept(JavacParser.java:471)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.accept(JavacParser.java:460)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:916)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1Rest(JavacParser.java:915)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:903)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:836)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.blockStatement(JavacParser.java:2730)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.blockStatements(JavacParser.java:2569)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.block(JavacParser.java:2539)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.block(JavacParser.java:2553)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.methodDeclaratorRest(JavacParser.java:4477)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.classOrInterfaceOrRecordBodyDeclaration(JavacParser.java:4334)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.classInterfaceOrRecordBody(JavacParser.java:4217)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.classDeclaration(JavacParser.java:3926)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.classOrRecordOrInterfaceOrEnumDeclaration(JavacParser.java:3867)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.typeDeclaration(JavacParser.java:3856)
at jdk.compiler/com.sun.tools.javac.parser.JavacParser.parseCompilationUnit(JavacParser.java:3700)
at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.parse(JavaCompiler.java:620)
at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.parse(JavaCompiler.java:657)
at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.parseFiles(JavaCompiler.java:1006)
at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.parseFiles(JavaCompiler.java:993)
at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:919)
at jdk.compiler/com.sun.tools.javac.api.JavacTaskImpl.lambda$doCall$0(JavacTaskImpl.java:104)
at jdk.compiler/com.sun.tools.javac.api.JavacTaskImpl.invocationHelper(JavacTaskImpl.java:152)
at jdk.compiler/com.sun.tools.javac.api.JavacTaskImpl.doCall(JavacTaskImpl.java:100)
at jdk.compiler/com.sun.tools.javac.api.JavacTaskImpl.call(JavacTaskImpl.java:94)
at Main.main(Main.java:31)
---------- BEGIN SOURCE ----------
* JavaAgent code:
import java.lang.instrument.Instrumentation;
public class Premain {
public static void premain(String agentArgs, Instrumentation instrumentation){
}
}
* JavaAgent Maven:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.example</groupId>
<artifactId>bug</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
</properties>
<dependencies>
<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.30</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.2.4</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<transformers>
<transformer
implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<manifestEntries>
<Premain-Class>Premain</Premain-Class>
<Can-Redefine-Classes>true</Can-Redefine-Classes>
<Can-Retransform-Classes>true</Can-Retransform-Classes>
</manifestEntries>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
* target Java code:
import javax.tools.*;
import java.io.IOException;
import java.net.URI;
import java.util.Arrays;
public class Main {
public static SimpleJavaFileObject getJavaFileContentsAsString(String s) {
StringBuilder javaFileContents =
new StringBuilder(
"import java.sql.*; public class TestClass { static String DBUSER; static String DBPW;"
+ " static String DBURL; public static void main(String[] args) {"
+ s
+ "}}");
JavaObjectFromString javaFileObject = null;
try {
javaFileObject = new JavaObjectFromString("TestClass.java", javaFileContents.toString());
} catch (Exception exception) {
exception.printStackTrace();
}
return javaFileObject;
}
public static void main(String[] args) throws Exception {
String s = "??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????";
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
DiagnosticCollector diagnosticsCollector = new DiagnosticCollector();
StandardJavaFileManager fileManager = compiler.getStandardFileManager(diagnosticsCollector, null, null);
JavaFileObject javaObjectFromString = getJavaFileContentsAsString(s);
Iterable fileObjects = Arrays.asList(javaObjectFromString);
JavaCompiler.CompilationTask task = compiler.getTask(null, fileManager, diagnosticsCollector, null, null, fileObjects);
Boolean result = task.call();
}
}
class JavaObjectFromString extends SimpleJavaFileObject {
private String contents = null;
public JavaObjectFromString(String className, String contents) throws Exception {
super(new URI(className), Kind.SOURCE);
this.contents = contents;
}
public CharSequence getCharContent(boolean ignoreEncodingErrors) throws IOException {
return contents;
}
}
---------- END SOURCE ----------
FREQUENCY : always