I believe I've traced the problem to the binary inside the generated
package-info.class files.  The path stored internally there uses the
backslash, while all other class files have forward slashes on Windows.

That appears to be written by the Classwriter (lines 1352-1358).   Debug
lines show the first call to visitSource have a null/empty file name.

Documentation here [1] states "The methods of this class must be called in
the following order: visit [ visitSource ]" but in the PR the visitSource
is called first.

I've now reached the end of my uninformed debugging/speculation.

[1] - ClassVisitor (ASM 9.2) (ow2.io)
<https://asm.ow2.io/javadoc/org/objectweb/asm/ClassVisitor.html>

On Mon, Feb 14, 2022 at 1:40 PM Daniel B. Widdis <wid...@gmail.com> wrote:

> I've confirmed this PR is the relevant problem as the symptoms can be
> suppressed by using
>
> mvn clean test "-Dmaven.compiler.createMissingPackageInfoClass=false"
>
>
> On Mon, Feb 14, 2022 at 9:50 AM Greg Chabala <greg.chab...@gmail.com>
> wrote:
>
>> Just my opinion, https://github.com/apache/maven-compiler-plugin/pull/88
>> feels like a hack solution.
>>
>> Generating classes for package-info.java files, just to appease some issue
>> with the incremental compiler? That seems like it should have been
>> filtered
>> in the compile plugin, not litter the build with classes that have no
>> function.
>>
>> On Mon, Feb 14, 2022 at 10:56 AM Daniel B. Widdis <wid...@gmail.com>
>> wrote:
>>
>> > I just bumped the maven-compiler-plugin version on my project from
>> 3.9.0 to
>> > 3.10.0 and it caused Windows-based builds to fail maven-bnd-plugin tests
>> > for package-info files in the "wrong" directory.  The symptom looks to
>> be
>> > associated with the windows file separator.
>> >
>> > Sample failure looks like:
>> > [INFO] Compiling 386 source files to
>> > D:\a\oshi\oshi\oshi-core\target\classes
>> > [INFO]
>> > [INFO] --- bnd-maven-plugin:6.1.0:bnd-process (default) @ oshi-core ---
>> > Error:  D:\a\oshi\oshi\oshi-core\pom.xml [0:0]: Classes found in the
>> wrong
>> > directory:
>> >
>> >
>> {oshi/jna/platform/unix/package-info.class=oshi\jna\platform\unix\package-info,
>> >
>> >
>> oshi/driver/unix/solaris/disk/package-info.class=oshi\driver\unix\solaris\disk\package-info,
>> >
>> >
>> oshi/hardware/platform/mac/package-info.class=oshi\hardware\platform\mac\package-info,
>> > oshi/software/os/package-info.class=oshi\software\os\package-info,
>> >
>> >
>> oshi/software/os/linux/package-info.class=oshi\software\os\linux\package-info,
>> > ... (many more)
>> >
>> > While the failure is in another plugin, is it possible something in
>> this PR
>> > didn't handle the change?
>> >  [MCOMPILER-205] Add a boolean to generate missing package-info classes
>> by
>> > default by gnodet · Pull Request #88 · apache/maven-compiler-plugin
>> > (github.com) <
>> > https://github.com/apache/maven-compiler-plugin/pull/88/files>
>> >
>> >
>> > I've looked over the code and don't see anything obvious there.
>> >
>> > I do have package-info files in all my packages so new ones should not
>> have
>> > been generated, but it seems new ones may have.
>> >
>> > Full test run here:  Bump maven-compiler-plugin from 3.9.0 to 3.10.0 ·
>> > oshi/oshi@471641b (github.com)
>> > <https://github.com/oshi/oshi/runs/5184078693?check_suite_focus=true>
>> >
>> > --
>> > Dan Widdis
>> >
>>
>
>
> --
> Dan Widdis
>


-- 
Dan Widdis

Reply via email to