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

Unable to combine --processor-module-path with unmodularized processors

    XMLWordPrintable

    Details

    • Type: Bug
    • Status: New
    • Priority: P4
    • Resolution: Unresolved
    • Affects Version/s: 15
    • Fix Version/s: None
    • Component/s: tools
    • Subcomponent:
    • CPU:
      x86_64
    • OS:
      windows_10

      Description

      A DESCRIPTION OF THE PROBLEM :
      When trying to run javac with multiple annotation processors, only some of which have been modularized, it's impossible to run the modularized ones off of --processor-module-path: using "--processor-path" for the unmodularized ones gives "error: illegal combination of -processorpath and --processor-module-path", and using "--class-path" gives "error: plug-in not found: ErrorProne".

      STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
      1. download the JARs for Lombok and Error Prone:
          https://projectlombok.org/downloads/lombok.jar
          https://repo1.maven.org/maven2/com/google/errorprone/error_prone_core/2.5.1/error_prone_core-2.5.1-with-dependencies.jar
          https://repo1.maven.org/maven2/org/checkerframework/dataflow-shaded/3.7.1/dataflow-shaded-3.7.1.jar
          https://repo1.maven.org/maven2/com/google/code/findbugs/jFormatString/3.0.0/jFormatString-3.0.0.jar
      2. create a file Foo.java in the same folder with the contents as given below
      3. run Lombok only: javac --processor-module-path lombok.jar --class-path lombok.jar Foo.java
      4. add Error Prone: javac -XDcompilePolicy=simple --processor-path error_prone_core-2.5.1-with-dependencies.jar;dataflow-shaded-3.7.1.jar;jFormatString-3.0.0.jar -Xplugin:ErrorProne --processor-module-path lombok.jar --class-path lombok.jar Foo.java
      5. move Lombok from --processor-module-path to --processor-path: javac -XDcompilePolicy=simple --processor-path error_prone_core-2.5.1-with-dependencies.jar;dataflow-shaded-3.7.1.jar;jFormatString-3.0.0.jar;lombok.jar -Xplugin:ErrorProne --class-path lombok.jar Foo.java


      EXPECTED VERSUS ACTUAL BEHAVIOR :
      EXPECTED -
      The javac invocation in step 4 works and the result is the same as the one of step 5.
      ACTUAL -
      The javac invocation in step 4 fails with:
      error: illegal combination of -processorpath and --processor-module-path

      ---------- BEGIN SOURCE ----------
      import lombok.Data;
      import java.util.Set;

      @Data
      class Foo {
          public static void main(String... args) {
              Set<Long> values = Set.of();
              if (values.contains(42)) {
                  System.out.println("Hello world!");
              }
          }
      }
      ---------- END SOURCE ----------

      CUSTOMER SUBMITTED WORKAROUND :
      Run modular annotation processors off of --processor-path as well

        Attachments

        1. dependencies.zip
          10.15 MB
        2. Foo.java
          0.3 kB

          Activity

            People

            Assignee:
            Unassigned Unassigned
            Reporter:
            webbuggrp Webbug Group
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

              Dates

              Created:
              Updated: