java.lang.IllegalArgumentException: Malformed \uxxxx encoding while mvn install

While running mvn install in my project, I end up with this error. While a lot of answers and resources point out errors in / vs \, I want to mention that I have no local changes and this repo just works fine for others in my team. It worked fine for me as well before.

Running on Mac Os 10.15.7 with JDK 1.8.0_291

Please find the full stacktrace:

[ERROR] Malformed \uxxxx encoding.
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) at org.eclipse.aether.internal.impl.TrackingFileManager.read (TrackingFileManager.java:56) at org.eclipse.aether.internal.impl.DefaultUpdateCheckManager.read (DefaultUpdateCheckManager.java:511) at org.eclipse.aether.internal.impl.DefaultUpdateCheckManager.checkMetadata (DefaultUpdateCheckManager.java:250) at org.eclipse.aether.internal.impl.DefaultMetadataResolver.resolve (DefaultMetadataResolver.java:302) at org.eclipse.aether.internal.impl.DefaultMetadataResolver.resolveMetadata (DefaultMetadataResolver.java:181) at org.apache.maven.repository.internal.DefaultVersionRangeResolver.getVersions (DefaultVersionRangeResolver.java:198) at org.apache.maven.repository.internal.DefaultVersionRangeResolver.resolveVersionRange (DefaultVersionRangeResolver.java:148) at org.apache.maven.repository.internal.DefaultModelResolver.resolveModel (DefaultModelResolver.java:197) at org.apache.maven.model.building.DefaultModelBuilder.readParentExternally (DefaultModelBuilder.java:1070) at org.apache.maven.model.building.DefaultModelBuilder.readParent (DefaultModelBuilder.java:846) at org.apache.maven.model.building.DefaultModelBuilder.build (DefaultModelBuilder.java:337) at org.apache.maven.repository.internal.DefaultArtifactDescriptorReader.loadPom (DefaultArtifactDescriptorReader.java:292) at org.apache.maven.repository.internal.DefaultArtifactDescriptorReader.readArtifactDescriptor (DefaultArtifactDescriptorReader.java:171) at org.eclipse.aether.internal.impl.collect.DefaultDependencyCollector.resolveCachedArtifactDescriptor (DefaultDependencyCollector.java:538) at org.eclipse.aether.internal.impl.collect.DefaultDependencyCollector.getArtifactDescriptorResult (DefaultDependencyCollector.java:523) at org.eclipse.aether.internal.impl.collect.DefaultDependencyCollector.processDependency (DefaultDependencyCollector.java:410) at org.eclipse.aether.internal.impl.collect.DefaultDependencyCollector.processDependency (DefaultDependencyCollector.java:362) at org.eclipse.aether.internal.impl.collect.DefaultDependencyCollector.process (DefaultDependencyCollector.java:349) at org.eclipse.aether.internal.impl.collect.DefaultDependencyCollector.doRecurse (DefaultDependencyCollector.java:506) at org.eclipse.aether.internal.impl.collect.DefaultDependencyCollector.processDependency (DefaultDependencyCollector.java:458) at org.eclipse.aether.internal.impl.collect.DefaultDependencyCollector.processDependency (DefaultDependencyCollector.java:362) at org.eclipse.aether.internal.impl.collect.DefaultDependencyCollector.process (DefaultDependencyCollector.java:349) at org.eclipse.aether.internal.impl.collect.DefaultDependencyCollector.doRecurse (DefaultDependencyCollector.java:506) at org.eclipse.aether.internal.impl.collect.DefaultDependencyCollector.processDependency (DefaultDependencyCollector.java:458) at org.eclipse.aether.internal.impl.collect.DefaultDependencyCollector.processDependency (DefaultDependencyCollector.java:362) at org.eclipse.aether.internal.impl.collect.DefaultDependencyCollector.process (DefaultDependencyCollector.java:349) at org.eclipse.aether.internal.impl.collect.DefaultDependencyCollector.doRecurse (DefaultDependencyCollector.java:506) at org.eclipse.aether.internal.impl.collect.DefaultDependencyCollector.processDependency (DefaultDependencyCollector.java:458) at org.eclipse.aether.internal.impl.collect.DefaultDependencyCollector.processDependency (DefaultDependencyCollector.java:362) at org.eclipse.aether.internal.impl.collect.DefaultDependencyCollector.process (DefaultDependencyCollector.java:349) at org.eclipse.aether.internal.impl.collect.DefaultDependencyCollector.doRecurse (DefaultDependencyCollector.java:506) at org.eclipse.aether.internal.impl.collect.DefaultDependencyCollector.processDependency (DefaultDependencyCollector.java:458) at org.eclipse.aether.internal.impl.collect.DefaultDependencyCollector.processDependency (DefaultDependencyCollector.java:362) at org.eclipse.aether.internal.impl.collect.DefaultDependencyCollector.process (DefaultDependencyCollector.java:349) at org.eclipse.aether.internal.impl.collect.DefaultDependencyCollector.doRecurse (DefaultDependencyCollector.java:506) at org.eclipse.aether.internal.impl.collect.DefaultDependencyCollector.processDependency (DefaultDependencyCollector.java:458) at org.eclipse.aether.internal.impl.collect.DefaultDependencyCollector.processDependency (DefaultDependencyCollector.java:362) at org.eclipse.aether.internal.impl.collect.DefaultDependencyCollector.process (DefaultDependencyCollector.java:349) at org.eclipse.aether.internal.impl.collect.DefaultDependencyCollector.doRecurse (DefaultDependencyCollector.java:506) at org.eclipse.aether.internal.impl.collect.DefaultDependencyCollector.processDependency (DefaultDependencyCollector.java:458) at org.eclipse.aether.internal.impl.collect.DefaultDependencyCollector.processDependency (DefaultDependencyCollector.java:362) at org.eclipse.aether.internal.impl.collect.DefaultDependencyCollector.process (DefaultDependencyCollector.java:349) at org.eclipse.aether.internal.impl.collect.DefaultDependencyCollector.doRecurse (DefaultDependencyCollector.java:506) at org.eclipse.aether.internal.impl.collect.DefaultDependencyCollector.processDependency (DefaultDependencyCollector.java:458) at org.eclipse.aether.internal.impl.collect.DefaultDependencyCollector.processDependency (DefaultDependencyCollector.java:362) at org.eclipse.aether.internal.impl.collect.DefaultDependencyCollector.process (DefaultDependencyCollector.java:349) at org.eclipse.aether.internal.impl.collect.DefaultDependencyCollector.collectDependencies (DefaultDependencyCollector.java:254) at org.eclipse.aether.internal.impl.DefaultRepositorySystem.collectDependencies (DefaultRepositorySystem.java:284) at org.apache.maven.project.DefaultProjectDependenciesResolver.resolve (DefaultProjectDependenciesResolver.java:169) at org.apache.maven.lifecycle.internal.LifecycleDependencyResolver.getDependencies (LifecycleDependencyResolver.java:243) at org.apache.maven.lifecycle.internal.LifecycleDependencyResolver.resolveProjectDependencies (LifecycleDependencyResolver.java:147) at org.apache.maven.lifecycle.internal.MojoExecutor.ensureDependenciesAreResolved (MojoExecutor.java:248) at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:202) at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:156) at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:148) at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117) at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81) at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56) at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128) at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:305) at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192) at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105) at org.apache.maven.cli.MavenCli.execute (MavenCli.java:957) at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:289) at org.apache.maven.cli.MavenCli.main (MavenCli.java:193) at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method) at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:78) at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke (Method.java:567) at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:282) at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:225) at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:406) at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:347)
[ERROR] 

I have already tried the following:

  1. Reinstalled java on my mac
  2. Reinstalled maven
  3. Tried to invalidate cache and restart IntelliJ multiple times.
3

17 Answers

For me it turned out to be a corrupted dependency as well.
I did not want to go through the process of setting up the debugger, so decided to look for files containing \u0000 in my ~/.m2 directory by running:

grep -rnw ~/.m2 -e '\u0000'

after that you will get the files which are corrupted, delete those files and then build the maven.

Note that you have to specify your repository folder if you configured it different to the default. Read your ~/.m2/settings.xml and use the value from localRepository instead. E.g.:

<settings> <localRepository>/else/where</localRepository>

use:

grep -rnw /else/where -e '\u0000'

and if you want all these files removed, pipe the file names to xargs rm:

grep -lrnw /else/where -e '\u0000' | xargs rm
7

To find which file is malformed (as to not have to delete your entire Maven repository) you can debug it like so:

  1. Add a breakpoint to the relevant line in java.util.Properties (as detailed in the error stack trace) and then run any Maven action in debug mode.

enter image description here

  1. When the code hits that breakpoint, find and select TrackingFileManager.read(File) in the call stack.

enter image description here

  1. Now find path of the file that caused the issue.

enter image description here

  1. The file is indeed malformed... Delete the file (and Maven will re-download it during the next action).

enter image description here

  1. The correct file (after having been deleted and re-downloaded):

enter image description here

6

I wrote an answer for another Question, this is similar issue. Below Solution worked for me.

go to your .m2 directory in home directory and for every dependence delete the "resolver-status.properties". You can do that using

find ~/.m2/ -name resolver-status.properties -delete

It will find all "resolver-status.properties" and -delete flag will delete them.

Now reload maven project.

3

In my case the problem was in the 3rd party library, incorrect charаcters somehow were saved to the resolver-status.properties file (example of incorrect line: maven-metadata-nexus-releases.xml.lastUpda\u0000\u0000\....) which is located under the ~/.m2/repository/path-to-the-library. Just removed the folder with the library and rebuilt the project.

3

Actually most of those answers are correct, but a little bit incomplete. Message shows up, because resolver-status.properties files get corrupted and they contain \u0000 as shown in micycle's answer. It sometimes helps to delete corrupted files and rerun maven command. Sometimes problem disappears and sometimes not. The question emerges WHY those files get corrupted. Well, it seems that maven contains a bug in resolver:

It seems that synchronization of multiple threads responsible for resolving dependencies is broken and in some conditions multiple threads resolve the same artifact and they break resolver-status.properties as shown by micycle.

In case your build still does not complete successfully despite deleting broken files you might want to limit resolver threads to one. To do that use JVM property:

-Daether.metadataResolver.threads=1

If you are using IntelliJ Idea use Settings->Build,Execution,Deployment->Maven->Runner field VMOptions:

IntelliJ IDEA 2021.3.1

After making this change remember to delete broken files (or whole .m2 directory) because once the files become corrupted they won't be fixed. Then rerun your Maven build.

3

I removed all artifacts from my ~/.m2 directory and re-ran mvn build. This time, build succeeded!

3

You don't actually need to delete the whole local maven repo, just the resolver-status.properties files in there, for mac:

find .m2/ -name resolver-status.properties -delete

works as a charm. I've even added an alias, as I use it pretty frequently, once in a couple of weeks.

removing .m2 folder and re-installing the dependency worked for me.

2

Go to .m2 repository, then run the below cmd from there FINDSTR /S /M "u0" resolver-status.properties This will enlist all the corrupted resolver properties files, delete them and you are good to GO!

Here is the solution for this issue for Windows users (didn't see any better solution for Windows users).

Open command prompt from .m2/repository/ folder and run the below FINDSTR command:

FINDSTR /S /M "u0" resolver-status.properties

This command will filter out the resolver-status.properties that has corrupt encoding.

Once you find the list of resolver-status.properties files, just delete them and then build your app.

1

deleting "resolver-status.properties" under

.m2\repository\kr\motd\maven\os-maven-plugin

resolve problem for me

1

Problem is likely in one of your dependencies (same as suggested by Alexey). For me the issue was to find the right dependency that got resolver-status.properties corrupted. What helped was running mvn clean install in debug mode (using Intellig configuration debug) and putting th endpoint in Properties.java (exact line should be in a stacktrace when you run with -e or -X option). In debug you can easily find which dependency is corrupted and remove only this dependency instead of entire .m2 catalog

Found out that the java version that maven was pointing to was different from the java version I was using. Seems like maven always points to the latest version of java.

First check if this is the issue by running mvn --version

If there is a mismatch in java version set JAVA_HOME by running

export JAVA_HOME=$(/usr/libexec/java_home)

Now run mvn --version. Maven should point to the right Java version.

When you run mvn install next time, maven automatically picks up the version set in JAVA_HOME

In my case, when we build the project or run any Maven command for the first time, dependencies or properties are getting saved in the repository folder (default location: ~/.m2/repository).

I have used multiple Maven and Java versions in the past, so some files are corrupted or valid for those specific versions.

I deleted this "repository" folder then built the project with Maven, and this time it built successfully.

1

Just do a Global search for resolver-status.properties and delete that file and restart the IDE. That should resolve the issue.

First, switch to directory

cd ~/.m2

then execute command line :

find ./ -name resolver-status.properties |xargs -I {} ls -l {}

it will delete error files which was created by error building, then it works.

Upgrading from 3.8.1 to 3.8.6 fixed the problem.

1

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

You Might Also Like