Uploaded image for project: 'Maven Compiler Plugin'
  1. Maven Compiler Plugin
  2. MCOMPILER-485

Incorrect internal string format in generated package-info.class files on Windows

Attach filesAttach ScreenshotVotersWatch issueWatchersCreate sub-taskLinkCloneUpdate Comment AuthorReplace String in CommentUpdate Comment VisibilityDelete Comments
    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • 3.10.0
    • 3.10.1
    • None
    • Windows, or any operating system with a file separator character other than a forward slash

    Description

      In 3.10.0, a new feature to generate package-info classes was added in [MCOMPILER-205]

      Unfortunately, the binary class file is incorrectly generated using Java's file toString() which uses a platform dependent file separator character: on Windows, these Strings contain a backslash.  See this line which passes the platform-dependent file name (minus the root path and .java extension) to the ClassWriter.

      The Java class file specification (4.2.1) specifies the internal format: "In this internal form, the ASCII periods (.) that normally separate the identifiers which make up the binary name are replaced by ASCII forward slashes ."

      This invalid class file format causes problems in downstream plugins, e.g.,

      • The bnd-maven-plugin fails with an error: Classes found in the wrong directory: {oshi/jna/platform/unix/package-info.class=oshi\jna\platform\unix\package-info ... (and hundreds more) ... }
      • The JDK's classFileParser will throw java.lang.NoClassDefFoundError: com\puppycrawl\tools\checkstyle\ant\package-info (wrong name: com/puppycrawl/tools/checkstyle/ant/package-info

      Steps to reproduce:

      1. Perform a build on any Windows machine using maven-compiler-plugin 3.10.0
      2. Inspect any of the generated package-info.class files in target/classes using a text editor

      Expected behavior:

      Internal strings representing package names use forward slashes

      Observed behavior:

      Internal strings representing package names use backward slashes

       

      Attachments

        Issue Links

        Activity

          This comment will be Viewable by All Users Viewable by All Users
          Cancel

          People

            olamy Olivier Lamy
            dbwiddis Daniel Widdis
            Votes:
            3 Vote for this issue
            Watchers:
            7 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Slack

                Issue deployment