Skip to content

java.lang.IllegalArgumentException: Malformed \uxxxx encoding ​

Problem Statement ​

The java.lang.IllegalArgumentException: Malformed \uxxxx encoding error occurs during Maven builds when corrupted property files in your local Maven repository contain malformed Unicode escape sequences. This typically happens with the resolver-status.properties files that Maven uses to track dependency resolution status.

The error manifests as a build failure with a stack trace showing:

none
java.lang.IllegalArgumentException: Malformed \uxxxx encoding.
    at java.util.Properties.loadConvert(Properties.java:672)
    at java.util.Properties.load0(Properties.java:455)
    at java.util.Properties.load(Properties.java:408)

Root Cause ​

This error occurs due to a known Maven resolver bug (MRESOLVER-216) where multiple threads may simultaneously attempt to resolve the same artifact, corrupting the resolver-status.properties files with invalid Unicode characters like \u0000.

Solutions ​

Quick Fix: Delete Corrupted Files ​

The most common solution is to locate and delete the corrupted resolver-status.properties files:

bash
# Find and delete all resolver-status.properties files
find ~/.m2 -name "resolver-status.properties" -delete
batch
# Find corrupted files
FINDSTR /S /M "u0" resolver-status.properties

# Then manually delete the files listed

Targeted Cleanup ​

For a more targeted approach that only removes corrupted files:

bash
# Search for files containing malformed Unicode sequences
grep -rnw ~/.m2 -e '\u0000'

# Delete only the corrupted files
find ~/.m2 -name "resolver-status.properties" -exec grep -H -e '\u0000' {} \; | sed -r 's/:.*$//g' | xargs rm

Complete Repository Reset ​

If the issue persists, you can delete your entire Maven repository:

bash
rm -rf ~/.m2/repository

WARNING

This will force Maven to download all dependencies again, which may take significant time depending on your internet connection and project size.

Prevent Recurrence ​

To prevent future occurrences, configure Maven to use a single thread for dependency resolution:

bash
mvn clean install -Daether.metadataResolver.threads=1

For IntelliJ IDEA users, configure this in: Settings → Build, Execution, Deployment → Maven → Runner → VM Options Add: -Daether.metadataResolver.threads=1

Advanced Debugging ​

If you need to identify the exact corrupted file:

  1. Run Maven with debug logging:

    bash
    mvn clean install -e -X
  2. Look for dependency resolution errors in the output

  3. Use your IDE's debugger to set a breakpoint at java.util.Properties.loadConvert() (line 672) to inspect the corrupted file path during execution

Verification ​

After applying any solution, verify the fix by running:

bash
mvn clean compile

The build should complete successfully without the encoding error.

Conclusion ​

The "Malformed \uxxxx encoding" error is typically caused by corrupted metadata files in your Maven repository. The most effective solutions involve:

  1. Deleting corrupted resolver-status.properties files
  2. Preventing concurrency issues with -Daether.metadataResolver.threads=1
  3. As a last resort, clearing the entire Maven repository

This approach resolves the issue while minimizing disruption to your development workflow.