[
https://issues.apache.org/jira/browse/RAT-585?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18134191#comment-18134191
]
Konrad Windszus edited comment on RAT-585 at 10/29/26, 12:32 PM:
-----------------------------------------------------------------
According to GPT 6.1 (Sol) this is what is happening:
h2. Finding: RAT misclassifies a Windows absolute path as relative
This strongly points to a drive-letter case-sensitivity bug in RAT 0.18, rather
than a Jenkins permissions or missing-directory problem. I checked the released
0.18 source; the same logic is present in this checkout.
The decisive clue is the malformed output path:
The workspace has been prepended to an already absolute path. The second f:
makes it invalid Windows filename syntax.
h2. How it happens
RatCheckMojo.execute passes the report’s absolute pathname into RAT’s argument
processing. The default report location is ${project.build.directory}/rat.txt.
Converters.FileConverter.apply decides whether it needs to resolve that
pathname against the project directory:
FSInfo.rootFor checks filesystem roots using case-sensitive string comparison:
If Windows enumerates the root as F:\, but Maven supplies f:\..., this
comparison fails—even though both identify the same drive.
RAT therefore treats the absolute pathname as relative. DocumentName.resolve
prepends the working directory, producing exactly the duplicated pathname in
the exception.
This explains why the failure is Windows-specific and potentially
agent-specific: Unix absolute paths begin with / and bypass the root lookup;
Windows drive-qualified paths depend on it.
.h2 Workaround
Explicitly configure a relative report location in the consuming project’s RAT
plugin configuration:
This avoids drive-root detection for the output argument. Unlike the default
absolute report pathname, it is intentionally resolved against the project’s
base directory.
was (Author: kwin):
According to GPT 6.1 (Sol) this is what is happening:
Finding: RAT misclassifies a Windows absolute path as relative
This strongly points to a drive-letter case-sensitivity bug in RAT 0.18, rather
than a Jenkins permissions or missing-directory problem. I checked the released
0.18 source; the same logic is present in this checkout.
The decisive clue is the malformed output path:
The workspace has been prepended to an already absolute path. The second f:
makes it invalid Windows filename syntax.
How it happens
RatCheckMojo.execute passes the report’s absolute pathname into RAT’s argument
processing. The default report location is ${project.build.directory}/rat.txt.
Converters.FileConverter.apply decides whether it needs to resolve that
pathname against the project directory:
FSInfo.rootFor checks filesystem roots using case-sensitive string comparison:
If Windows enumerates the root as F:\, but Maven supplies f:\..., this
comparison fails—even though both identify the same drive.
RAT therefore treats the absolute pathname as relative. DocumentName.resolve
prepends the working directory, producing exactly the duplicated pathname in
the exception.
This explains why the failure is Windows-specific and potentially
agent-specific: Unix absolute paths begin with / and bypass the root lookup;
Windows drive-qualified paths depend on it.
> FileNotFoundException on Windows in org.apache.rat.Reporter.output
> (Reporter.java:155) due to incorrect absolute filepath
> -------------------------------------------------------------------------------------------------------------------------
>
> Key: RAT-585
> URL: https://issues.apache.org/jira/browse/RAT-585
> Project: Apache RAT
> Issue Type: Bug
> Components: reports
> Affects Versions: 0.18
> Reporter: Konrad Windszus
> Priority: Major
>
> I ran into the following exception on a Jenkins Windows node:
> {code}
> [ERROR] Failed to execute goal org.apache.rat:apache-rat-plugin:0.18:check
> (default) on project jackrabbit-filevault: java.io.FileNotFoundException:
> f:\jenkins\jenkins-home\712657a4\workspace\_filevault_feature_asf-parent-40\f:\jenkins\jenkins-home\712657a4\workspace\_filevault_feature_asf-parent-40\target\rat.txt
> (The filename, directory name, or volume label syntax is incorrect) -> [Help
> 1]
> org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute
> goal org.apache.rat:apache-rat-plugin:0.18:check (default) on project
> jackrabbit-filevault: java.io.FileNotFoundException:
> f:\jenkins\jenkins-home\712657a4\workspace\_filevault_feature_asf-parent-40\f:\jenkins\jenkins-home\712657a4\workspace\_filevault_feature_asf-parent-40\target\rat.txt
> (The filename, directory name, or volume label syntax is incorrect)
> at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2
> (MojoExecutor.java:342)
> at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute
> (MojoExecutor.java:324)
> at org.apache.maven.lifecycle.internal.MojoExecutor.execute
> (MojoExecutor.java:220)
> at org.apache.maven.lifecycle.internal.MojoExecutor.execute
> (MojoExecutor.java:181)
> at org.apache.maven.lifecycle.internal.MojoExecutor.access$000
> (MojoExecutor.java:79)
> at org.apache.maven.lifecycle.internal.MojoExecutor$1.run
> (MojoExecutor.java:169)
> at org.apache.maven.plugin.DefaultMojosExecutionStrategy.execute
> (DefaultMojosExecutionStrategy.java:39)
> at org.apache.maven.lifecycle.internal.MojoExecutor.execute
> (MojoExecutor.java:166)
> at
> org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject
> (LifecycleModuleBuilder.java:106)
> at
> org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject
> (LifecycleModuleBuilder.java:74)
> at
> org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build
> (SingleThreadedBuilder.java:56)
> at org.apache.maven.lifecycle.internal.LifecycleStarter.execute
> (LifecycleStarter.java:121)
> at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:267)
> at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:179)
> at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
> at org.apache.maven.cli.MavenCli.execute (MavenCli.java:1017)
> at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:299)
> at org.apache.maven.cli.MavenCli.main (MavenCli.java:219)
> at jdk.internal.reflect.DirectMethodHandleAccessor.invoke
> (DirectMethodHandleAccessor.java:103)
> at java.lang.reflect.Method.invoke (Method.java:580)
> at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced
> (Launcher.java:255)
> at org.codehaus.plexus.classworlds.launcher.Launcher.launch
> (Launcher.java:201)
> at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode
> (Launcher.java:362)
> at org.codehaus.plexus.classworlds.launcher.Launcher.main
> (Launcher.java:314)
> Caused by: org.apache.maven.plugin.MojoExecutionException:
> java.io.FileNotFoundException:
> f:\jenkins\jenkins-home\712657a4\workspace\_filevault_feature_asf-parent-40\f:\jenkins\jenkins-home\712657a4\workspace\_filevault_feature_asf-parent-40\target\rat.txt
> (The filename, directory name, or volume label syntax is incorrect)
> at org.apache.rat.mp.RatCheckMojo.execute (RatCheckMojo.java:220)
> at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo
> (DefaultBuildPluginManager.java:127)
> at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2
> (MojoExecutor.java:336)
> at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute
> (MojoExecutor.java:324)
> at org.apache.maven.lifecycle.internal.MojoExecutor.execute
> (MojoExecutor.java:220)
> at org.apache.maven.lifecycle.internal.MojoExecutor.execute
> (MojoExecutor.java:181)
> at org.apache.maven.lifecycle.internal.MojoExecutor.access$000
> (MojoExecutor.java:79)
> at org.apache.maven.lifecycle.internal.MojoExecutor$1.run
> (MojoExecutor.java:169)
> at org.apache.maven.plugin.DefaultMojosExecutionStrategy.execute
> (DefaultMojosExecutionStrategy.java:39)
> at org.apache.maven.lifecycle.internal.MojoExecutor.execute
> (MojoExecutor.java:166)
> at
> org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject
> (LifecycleModuleBuilder.java:106)
> at
> org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject
> (LifecycleModuleBuilder.java:74)
> at
> org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build
> (SingleThreadedBuilder.java:56)
> at org.apache.maven.lifecycle.internal.LifecycleStarter.execute
> (LifecycleStarter.java:121)
> at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:267)
> at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:179)
> at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
> at org.apache.maven.cli.MavenCli.execute (MavenCli.java:1017)
> at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:299)
> at org.apache.maven.cli.MavenCli.main (MavenCli.java:219)
> at jdk.internal.reflect.DirectMethodHandleAccessor.invoke
> (DirectMethodHandleAccessor.java:103)
> at java.lang.reflect.Method.invoke (Method.java:580)
> at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced
> (Launcher.java:255)
> at org.codehaus.plexus.classworlds.launcher.Launcher.launch
> (Launcher.java:201)
> at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode
> (Launcher.java:362)
> at org.codehaus.plexus.classworlds.launcher.Launcher.main
> (Launcher.java:314)
> Caused by: org.apache.rat.api.RatException: java.io.FileNotFoundException:
> f:\jenkins\jenkins-home\712657a4\workspace\_filevault_feature_asf-parent-40\f:\jenkins\jenkins-home\712657a4\workspace\_filevault_feature_asf-parent-40\target\rat.txt
> (The filename, directory name, or volume label syntax is incorrect)
> at org.apache.rat.Reporter.output (Reporter.java:155)
> at org.apache.rat.Reporter.output (Reporter.java:127)
> at org.apache.rat.mp.RatCheckMojo.execute (RatCheckMojo.java:212)
> at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo
> (DefaultBuildPluginManager.java:127)
> at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2
> (MojoExecutor.java:336)
> at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute
> (MojoExecutor.java:324)
> at org.apache.maven.lifecycle.internal.MojoExecutor.execute
> (MojoExecutor.java:220)
> at org.apache.maven.lifecycle.internal.MojoExecutor.execute
> (MojoExecutor.java:181)
> at org.apache.maven.lifecycle.internal.MojoExecutor.access$000
> (MojoExecutor.java:79)
> at org.apache.maven.lifecycle.internal.MojoExecutor$1.run
> (MojoExecutor.java:169)
> at org.apache.maven.plugin.DefaultMojosExecutionStrategy.execute
> (DefaultMojosExecutionStrategy.java:39)
> at org.apache.maven.lifecycle.internal.MojoExecutor.execute
> (MojoExecutor.java:166)
> at
> org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject
> (LifecycleModuleBuilder.java:106)
> at
> org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject
> (LifecycleModuleBuilder.java:74)
> at
> org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build
> (SingleThreadedBuilder.java:56)
> at org.apache.maven.lifecycle.internal.LifecycleStarter.execute
> (LifecycleStarter.java:121)
> at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:267)
> at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:179)
> at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
> at org.apache.maven.cli.MavenCli.execute (MavenCli.java:1017)
> at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:299)
> at org.apache.maven.cli.MavenCli.main (MavenCli.java:219)
> at jdk.internal.reflect.DirectMethodHandleAccessor.invoke
> (DirectMethodHandleAccessor.java:103)
> at java.lang.reflect.Method.invoke (Method.java:580)
> at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced
> (Launcher.java:255)
> at org.codehaus.plexus.classworlds.launcher.Launcher.launch
> (Launcher.java:201)
> at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode
> (Launcher.java:362)
> at org.codehaus.plexus.classworlds.launcher.Launcher.main
> (Launcher.java:314)
> Caused by: java.io.FileNotFoundException:
> f:\jenkins\jenkins-home\712657a4\workspace\_filevault_feature_asf-parent-40\f:\jenkins\jenkins-home\712657a4\workspace\_filevault_feature_asf-parent-40\target\rat.txt
> (The filename, directory name, or volume label syntax is incorrect)
> at java.io.FileOutputStream.open0 (Native Method)
> at java.io.FileOutputStream.open (FileOutputStream.java:289)
> at java.io.FileOutputStream.<init> (FileOutputStream.java:230)
> at org.apache.rat.ReportConfiguration.lambda$setOut$0
> (ReportConfiguration.java:536)
> at org.apache.rat.Reporter.output (Reporter.java:143)
> at org.apache.rat.Reporter.output (Reporter.java:127)
> at org.apache.rat.mp.RatCheckMojo.execute (RatCheckMojo.java:212)
> at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo
> (DefaultBuildPluginManager.java:127)
> at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2
> (MojoExecutor.java:336)
> at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute
> (MojoExecutor.java:324)
> at org.apache.maven.lifecycle.internal.MojoExecutor.execute
> (MojoExecutor.java:220)
> at org.apache.maven.lifecycle.internal.MojoExecutor.execute
> (MojoExecutor.java:181)
> at org.apache.maven.lifecycle.internal.MojoExecutor.access$000
> (MojoExecutor.java:79)
> at org.apache.maven.lifecycle.internal.MojoExecutor$1.run
> (MojoExecutor.java:169)
> at org.apache.maven.plugin.DefaultMojosExecutionStrategy.execute
> (DefaultMojosExecutionStrategy.java:39)
> at org.apache.maven.lifecycle.internal.MojoExecutor.execute
> (MojoExecutor.java:166)
> at
> org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject
> (LifecycleModuleBuilder.java:106)
> at
> org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject
> (LifecycleModuleBuilder.java:74)
> at
> org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build
> (SingleThreadedBuilder.java:56)
> at org.apache.maven.lifecycle.internal.LifecycleStarter.execute
> (LifecycleStarter.java:121)
> at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:267)
> at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:179)
> at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
> at org.apache.maven.cli.MavenCli.execute (MavenCli.java:1017)
> at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:299)
> at org.apache.maven.cli.MavenCli.main (MavenCli.java:219)
> at jdk.internal.reflect.DirectMethodHandleAccessor.invoke
> (DirectMethodHandleAccessor.java:103)
> at java.lang.reflect.Method.invoke (Method.java:580)
> at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced
> (Launcher.java:255)
> at org.codehaus.plexus.classworlds.launcher.Launcher.launch
> (Launcher.java:201)
> at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode
> (Launcher.java:362)
> at org.codehaus.plexus.classworlds.launcher.Launcher.main
> (Launcher.java:314)
> {code}
> This does not happen on a GHA with a Windows runner though, so seems to be
> related to the path being used by Jenkins.
> You can see the failing build in
> https://ci-builds.apache.org/job/Jackrabbit/job/filevault/job/feature%252Fasf-parent-40/1/cloudbees-pipeline-explorer/?filter=101.
> This happens when building
> https://github.com/apache/jackrabbit-filevault/pull/453.
--
This message was sent by Atlassian Jira
(v10.3.26#10030026)