[
https://issues.apache.org/jira/browse/RAT-585?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18134191#comment-18134191
]
Konrad Windszus commented on RAT-585:
-------------------------------------
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)
> --------------------------------------------------------------------------------------
>
> 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)