[ https://issues.apache.org/jira/browse/MCOMPILER-485?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17502657#comment-17502657 ]
Olivier Lamy commented on MCOMPILER-485: ---------------------------------------- Yes I have to plan to do it this week. need to release and wait for the required vote period. But the hope is to have dependabot triggering thousands of PRs by the end of the week (maybe for the weekend :)) > Incorrect internal string format in generated package-info.class files on > Windows > --------------------------------------------------------------------------------- > > Key: MCOMPILER-485 > URL: https://issues.apache.org/jira/browse/MCOMPILER-485 > Project: Maven Compiler Plugin > Issue Type: Bug > Affects Versions: 3.10.0 > Environment: Windows, or any operating system with a file separator > character other than a forward slash > Reporter: Daniel Widdis > Assignee: Olivier Lamy > Priority: Major > Fix For: 3.11.0 > > > In 3.10.0, a new feature to generate package-info classes was added in > [[MCOMPILER-205] |https://github.com/apache/maven-compiler-plugin/pull/88] > 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|https://github.com/gnodet/maven-compiler-plugin/blob/8521ef8fdd12cc0b85c1ace17114ed3d3ffd0b0c/src/main/java/org/apache/maven/plugin/compiler/AbstractCompilerMojo.java#L1356] > 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|https://github.com/openjdk/jdk17/blob/74007890bb9a3fa3a65683a3f480e399f2b1a0b6/src/hotspot/share/classfile/classFileParser.cpp#L5797] > will throw java.lang.NoClassDefFoundError: > com\puppycrawl\tools\checkstyle\ant\package-info (wrong name: > com/puppycrawl/tools/checkstyle/ant/package-info > Steps to reproduce: > # Perform a build on any Windows machine using maven-compiler-plugin 3.10.0 > # 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 > -- This message was sent by Atlassian Jira (v8.20.1#820001)