Fix MalformedInputException on Windows with Java 8 due to charset mis… #1274
+9
−19
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
…match in stale data cache
Problem
Starting in version 3.11.3, running
mvn javadoc:javadoc
twice in succession on Windows with Java 8 fails on the second run with:This regression affects Windows users running Java 8, where the default platform encoding is
Cp1252
.Root Cause
The issue stems from a charset mismatch in how the stale data cache file is written versus how it's read:
Write operation (
StaleHelper.writeStaleData()
, line 126):getDataCharset()
which returnsCharset.defaultCharset()
for Java 8Cp1252
Read operation (
AbstractJavadocMojo.isUpToDate()
, line 5008):StandardCharsets.UTF_8
When the second run attempts to read a file written with
Cp1252
encoding usingUTF-8
, any non-ASCII bytes cause aMalformedInputException
.Solution
Changed
StaleHelper
to always save inStandardCharsets.UTF_8
instead of platform-dependent charset. This ensures:Fixes: #1273 #1264