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

JavaCompiler generates java.lang.AssertionError in some cases

XMLWordPrintable

    • 11
    • generic
    • generic

      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


            vromero Vicente Arturo Romero Zaldivar
            webbuggrp Webbug Group
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

              Created:
              Updated: