[ 
https://issues.apache.org/jira/browse/RAT-494?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18027869#comment-18027869
 ] 

Claude Warren edited comment on RAT-494 at 10/6/25 4:40 PM:
------------------------------------------------------------

https://github.com/apache/creadur-rat/pull/546 attempts to fix this problem.

The problem was caused when Tika detected an encoding that was not supported by 
the Java version.

Previously the unknown encoding exception was being caught and the default 
encoding attempted.

The solution was to capture the unknown encoding exception and change the 
document type from STANDARD to UNKNOWN.

A second line of defence was to modify the Document.reader() method  so that if 
a null reader is generated an IOException is thrown rather than an NPE.

I was unable to build a test that would fail.

 


was (Author: claudenw):
s://github.com/apache/creadur-rat/pull/546 attempts to fix this problem.

The problem was caused when Tika detected an encoding that was not supported by 
the Java version.

Previously the unknown encoding exception was being caught and the default 
encoding attempted.

The solution was to capture the unknown encoding exception and change the 
document type from STANDARD to UNKNOWN.

A second line of defence was to modify the Document.reader() method  so that if 
a null reader is generated an IOException is thrown rather than an NPE.

I was unable to build a test that would fail.

 

> NullPointerException: Reader may not be null
> --------------------------------------------
>
>                 Key: RAT-494
>                 URL: https://issues.apache.org/jira/browse/RAT-494
>             Project: Apache Rat
>          Issue Type: Bug
>    Affects Versions: 0.17
>            Reporter: Tilman Hausherr
>            Assignee: Claude Warren
>            Priority: Major
>         Attachments: GQBOZYKKDEXTGJKCNZMYB5NIGXGDVTX2-spaced.pdf
>
>
> I am testing the 0.17 snapshot plugin with my (modified) Apache PDFBox build 
> and got this:
> Processing: FileDocument( name = \src\test\resources\input\001991.pdf 
> metaData = MetaData[0 license, 0 approved] )
> Processing: FileDocument( name = \src\test\resources\input\032431.pdf 
> metaData = MetaData[0 license, 0 approved] )
> Processing: FileDocument( name = 
> \src\test\resources\input\10.5445IR1000150280-p15.pdf metaData = MetaData[0 
> license, 0 approved] )
> Processing: FileDocument( name = \src\test\resources\input\10101-AR.pdf 
> metaData = MetaData[0 license, 0 approved] )
> Processing: FileDocument( name = \src\test\resources\input\172096-p5.pdf 
> metaData = MetaData[0 license, 0 approved] )
> Processing: FileDocument( name = 
> \src\test\resources\input\400241-p135-missing-space.pdf metaData = MetaData[0 
> license, 0 approved] )
> Processing: FileDocument( name = \src\test\resources\input\433525-p1.pdf 
> metaData = MetaData[0 license, 0 approved] )
> Processing: FileDocument( name = \src\test\resources\input\601501018.pdf 
> metaData = MetaData[0 license, 0 approved] )
> Processing: FileDocument( name = 
> \src\test\resources\input\7LRS5U6CAFMN2P6JPTZVNBUW6XOFYH4M.pdf metaData = 
> MetaData[0 license, 0 approved] )
> Processing: FileDocument( name = \src\test\resources\input\Acrobat9.pdf 
> metaData = MetaData[0 license, 0 approved] )
> Processing: FileDocument( name = \src\test\resources\input\Exolab.pdf 
> metaData = MetaData[0 license, 0 approved] )
> Processing: FileDocument( name = 
> \src\test\resources\input\FAWDFZM4EXMI27ZDB7IJXHKIEDQLKBCD-p3_reduced.pdf 
> metaData = MetaData[0 license, 0 approved] )
> Processing: FileDocument( name = \src\test\resources\input\FC60_Times.pdf 
> metaData = MetaData[0 license, 0 approved] )
> Processing: FileDocument( name = 
> \src\test\resources\input\FES-GGArabisch-p112.pdf metaData = MetaData[0 
> license, 0 approved] )
> Processing: FileDocument( name = 
> \src\test\resources\input\FreedomExpressions.pdf metaData = MetaData[0 
> license, 0 approved] )
> Unsupported character set 'IBM424_ltr' in file 
> '\src\test\resources\input\GQBOZYKKDEXTGJKCNZMYB5NIGXGDVTX2-spaced.pdf'.  
> Will use system default encoding.
> Processing: FileDocument( name = 
> \src\test\resources\input\GQBOZYKKDEXTGJKCNZMYB5NIGXGDVTX2-spaced.pdf 
> metaData = MetaData[0 license, 0 approved] )
> ------------------------------------------------------------------------
> BUILD FAILURE
> ------------------------------------------------------------------------
> Total time:  02:56 min
> Finished at: 2025-10-04T18:59:39+02:00
> ------------------------------------------------------------------------
> Failed to execute goal org.apache.rat:apache-rat-plugin:0.17-SNAPSHOT:check 
> (default) on project pdfbox: java.lang.NullPointerException: Reader may not 
> be null -> [Help 1]
> org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute 
> goal org.apache.rat:apache-rat-plugin:0.17-SNAPSHOT:check (default) on 
> project pdfbox: java.lang.NullPointerException: Reader may not be null
>     at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2 
> (MojoExecutor.java:333)
>     at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute 
> (MojoExecutor.java:316)
>     at org.apache.maven.lifecycle.internal.MojoExecutor.execute 
> (MojoExecutor.java:212)
>     at org.apache.maven.lifecycle.internal.MojoExecutor.execute 
> (MojoExecutor.java:174)
>     at org.apache.maven.lifecycle.internal.MojoExecutor.access$000 
> (MojoExecutor.java:75)
>     at org.apache.maven.lifecycle.internal.MojoExecutor$1.run 
> (MojoExecutor.java:162)
>     at org.apache.maven.plugin.DefaultMojosExecutionStrategy.execute 
> (DefaultMojosExecutionStrategy.java:39)
>     at org.apache.maven.lifecycle.internal.MojoExecutor.execute 
> (MojoExecutor.java:159)
>     at 
> org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject 
> (LifecycleModuleBuilder.java:105)
>     at 
> org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject 
> (LifecycleModuleBuilder.java:73)
>     at 
> org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build
>  (SingleThreadedBuilder.java:53)
>     at org.apache.maven.lifecycle.internal.LifecycleStarter.execute 
> (LifecycleStarter.java:118)
>     at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:261)
>     at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:173)
>     at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:101)
>     at org.apache.maven.cli.MavenCli.execute (MavenCli.java:906)
>     at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:283)
>     at org.apache.maven.cli.MavenCli.main (MavenCli.java:206)
>     at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
>     at jdk.internal.reflect.NativeMethodAccessorImpl.invoke 
> (NativeMethodAccessorImpl.java:62)
>     at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke 
> (DelegatingMethodAccessorImpl.java:43)
>     at java.lang.reflect.Method.invoke (Method.java:566)
>     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:361)
>     at org.codehaus.plexus.classworlds.launcher.Launcher.main 
> (Launcher.java:314)
> Caused by: org.apache.maven.plugin.MojoExecutionException: 
> java.lang.NullPointerException: Reader may not be null
>     at org.apache.rat.mp.RatCheckMojo.execute (RatCheckMojo.java:193)
>     at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo 
> (DefaultBuildPluginManager.java:126)
>     at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2 
> (MojoExecutor.java:328)
>     at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute 
> (MojoExecutor.java:316)
>     at org.apache.maven.lifecycle.internal.MojoExecutor.execute 
> (MojoExecutor.java:212)
>     at org.apache.maven.lifecycle.internal.MojoExecutor.execute 
> (MojoExecutor.java:174)
>     at org.apache.maven.lifecycle.internal.MojoExecutor.access$000 
> (MojoExecutor.java:75)
>     at org.apache.maven.lifecycle.internal.MojoExecutor$1.run 
> (MojoExecutor.java:162)
>     at org.apache.maven.plugin.DefaultMojosExecutionStrategy.execute 
> (DefaultMojosExecutionStrategy.java:39)
>     at org.apache.maven.lifecycle.internal.MojoExecutor.execute 
> (MojoExecutor.java:159)
>     at 
> org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject 
> (LifecycleModuleBuilder.java:105)
>     at 
> org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject 
> (LifecycleModuleBuilder.java:73)
>     at 
> org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build
>  (SingleThreadedBuilder.java:53)
>     at org.apache.maven.lifecycle.internal.LifecycleStarter.execute 
> (LifecycleStarter.java:118)
>     at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:261)
>     at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:173)
>     at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:101)
>     at org.apache.maven.cli.MavenCli.execute (MavenCli.java:906)
>     at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:283)
>     at org.apache.maven.cli.MavenCli.main (MavenCli.java:206)
>     at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
>     at jdk.internal.reflect.NativeMethodAccessorImpl.invoke 
> (NativeMethodAccessorImpl.java:62)
>     at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke 
> (DelegatingMethodAccessorImpl.java:43)
>     at java.lang.reflect.Method.invoke (Method.java:566)
>     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:361)
>     at org.codehaus.plexus.classworlds.launcher.Launcher.main 
> (Launcher.java:314)
> Caused by: org.apache.rat.api.RatException: java.lang.NullPointerException: 
> Reader may not be null
>     at org.apache.rat.api.RatException.makeRatException (RatException.java:29)
>     at org.apache.rat.Reporter.execute (Reporter.java:106)
>     at org.apache.rat.Reporter.output (Reporter.java:140)
>     at org.apache.rat.Reporter.output (Reporter.java:127)
>     at org.apache.rat.mp.RatCheckMojo.execute (RatCheckMojo.java:188)
>     at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo 
> (DefaultBuildPluginManager.java:126)
>     at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2 
> (MojoExecutor.java:328)
>     at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute 
> (MojoExecutor.java:316)
>     at org.apache.maven.lifecycle.internal.MojoExecutor.execute 
> (MojoExecutor.java:212)
>     at org.apache.maven.lifecycle.internal.MojoExecutor.execute 
> (MojoExecutor.java:174)
>     at org.apache.maven.lifecycle.internal.MojoExecutor.access$000 
> (MojoExecutor.java:75)
>     at org.apache.maven.lifecycle.internal.MojoExecutor$1.run 
> (MojoExecutor.java:162)
>     at org.apache.maven.plugin.DefaultMojosExecutionStrategy.execute 
> (DefaultMojosExecutionStrategy.java:39)
>     at org.apache.maven.lifecycle.internal.MojoExecutor.execute 
> (MojoExecutor.java:159)
>     at 
> org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject 
> (LifecycleModuleBuilder.java:105)
>     at 
> org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject 
> (LifecycleModuleBuilder.java:73)
>     at 
> org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build
>  (SingleThreadedBuilder.java:53)
>     at org.apache.maven.lifecycle.internal.LifecycleStarter.execute 
> (LifecycleStarter.java:118)
>     at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:261)
>     at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:173)
>     at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:101)
>     at org.apache.maven.cli.MavenCli.execute (MavenCli.java:906)
>     at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:283)
>     at org.apache.maven.cli.MavenCli.main (MavenCli.java:206)
>     at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
>     at jdk.internal.reflect.NativeMethodAccessorImpl.invoke 
> (NativeMethodAccessorImpl.java:62)
>     at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke 
> (DelegatingMethodAccessorImpl.java:43)
>     at java.lang.reflect.Method.invoke (Method.java:566)
>     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:361)
>     at org.codehaus.plexus.classworlds.launcher.Launcher.main 
> (Launcher.java:314)
> Caused by: java.lang.NullPointerException: Reader may not be null
>     at java.util.Objects.requireNonNull (Objects.java:246)
>     at org.apache.rat.analysis.HeaderCheckWorker.<init> 
> (HeaderCheckWorker.java:128)
>     at org.apache.rat.analysis.HeaderCheckWorker.<init> 
> (HeaderCheckWorker.java:112)
>     at org.apache.rat.analysis.DocumentHeaderAnalyser.analyse 
> (DocumentHeaderAnalyser.java:57)
>     at org.apache.rat.analysis.AnalyserFactory$DefaultAnalyser.analyse 
> (AnalyserFactory.java:143)
>     at org.apache.rat.analysis.AnalyserFactory.lambda$createMultiplexer$1 
> (AnalyserFactory.java:71)
>     at org.apache.rat.report.claim.ClaimReporterMultiplexer.report 
> (ClaimReporterMultiplexer.java:64)
>     at org.apache.rat.walker.DirectoryWalker.process (DirectoryWalker.java:65)
>     at org.apache.rat.walker.DirectoryWalker.process (DirectoryWalker.java:67)
>     at org.apache.rat.walker.DirectoryWalker.process (DirectoryWalker.java:67)
>     at org.apache.rat.walker.DirectoryWalker.process (DirectoryWalker.java:67)
>     at org.apache.rat.walker.DirectoryWalker.process (DirectoryWalker.java:67)
>     at org.apache.rat.walker.DirectoryWalker.run (DirectoryWalker.java:50)
>     at org.apache.rat.walker.IReportableListWalker.run 
> (IReportableListWalker.java:62)
>     at org.apache.rat.Reporter.execute (Reporter.java:95)
>     at org.apache.rat.Reporter.output (Reporter.java:140)
>     at org.apache.rat.Reporter.output (Reporter.java:127)
>     at org.apache.rat.mp.RatCheckMojo.execute (RatCheckMojo.java:188)
>     at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo 
> (DefaultBuildPluginManager.java:126)
>     at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2 
> (MojoExecutor.java:328)
>     at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute 
> (MojoExecutor.java:316)
>     at org.apache.maven.lifecycle.internal.MojoExecutor.execute 
> (MojoExecutor.java:212)
>     at org.apache.maven.lifecycle.internal.MojoExecutor.execute 
> (MojoExecutor.java:174)
>     at org.apache.maven.lifecycle.internal.MojoExecutor.access$000 
> (MojoExecutor.java:75)
>     at org.apache.maven.lifecycle.internal.MojoExecutor$1.run 
> (MojoExecutor.java:162)
>     at org.apache.maven.plugin.DefaultMojosExecutionStrategy.execute 
> (DefaultMojosExecutionStrategy.java:39)
>     at org.apache.maven.lifecycle.internal.MojoExecutor.execute 
> (MojoExecutor.java:159)
>     at 
> org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject 
> (LifecycleModuleBuilder.java:105)
>     at 
> org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject 
> (LifecycleModuleBuilder.java:73)
>     at 
> org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build
>  (SingleThreadedBuilder.java:53)
>     at org.apache.maven.lifecycle.internal.LifecycleStarter.execute 
> (LifecycleStarter.java:118)
>     at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:261)
>     at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:173)
>     at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:101)
>     at org.apache.maven.cli.MavenCli.execute (MavenCli.java:906)
>     at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:283)
>     at org.apache.maven.cli.MavenCli.main (MavenCli.java:206)
>     at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
>     at jdk.internal.reflect.NativeMethodAccessorImpl.invoke 
> (NativeMethodAccessorImpl.java:62)
>     at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke 
> (DelegatingMethodAccessorImpl.java:43)
>     at java.lang.reflect.Method.invoke (Method.java:566)
>     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:361)
>     at org.codehaus.plexus.classworlds.launcher.Launcher.main 
> (Launcher.java:314)
> For more information about the errors and possible solutions, please read the 
> following articles:
> [Help 1] 
> http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException
> Shutting down adapter factory; available factories [file-lock, rwlock-local, 
> semaphore-local, noop]; available name mappers [discriminating, file-gav, 
> file-hgav, file-static, gav, static]
> Shutting down 'file-lock' factory
> Shutting down 'rwlock-local' factory
> Shutting down 'semaphore-local' factory
> Shutting down 'noop' factory



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to