【问题标题】:java.lang.IllegalArgumentException: Malformed \uxxxx encoding while mvn installjava.lang.IllegalArgumentException: Malformed \uxxxx encoding while mvn install
【发布时间】:2021-09-01 07:37:45
【问题描述】:

在我的项目中运行 mvn install 时,我最终遇到了这个错误。虽然很多答案和资源都指出了 /\ 中的错误,但我想提一下,我没有本地更改,这个 repo 对我团队中的其他人来说效果很好。以前对我来说也很好用。

在带有 JDK 1.8.0_291 的 Mac Os 10.15.7 上运行

请找到完整的堆栈跟踪:

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] 

我已经尝试了以下方法:

  1. 在我的 mac 上重新安装了 java
  2. 重新安装 maven
  3. 多次尝试使缓存无效并重新启动 IntelliJ。

【问题讨论】:

  • 我也有类似的问题。回滚所有本地更改,但仍然存在问题。今天早些时候工作,很确定我没有任何更新。
  • @SebastianL 请找到我的答案,它对我有用

标签: java macos maven encoding java-8


【解决方案1】:

对我来说,这也是一个损坏的依赖项。
我不想经历设置调试器的过程,所以决定通过运行在我的~/.m2 目录中查找包含\u0000 的文件:

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

【讨论】:

  • 这对我有用。在 macOS 上,我运行“grep -r -e '\u0000' ~/.m2”,它产生了正确的 resolver-ststus.properties,在删除依赖项后,它被正确的替换,一切正常。跨度>
  • 我需要复习grep 选项。这比我做的更简洁:find ~/.m2 -name "resolver-status.properties" -print -exec grep "u0" {} \;
【解决方案2】:

在我的情况下,问题出在第 3 方库中,不正确的字符以某种方式保存到位于~/.m2/repository/path-to-the-library。刚刚删除了包含库的文件夹并重建了项目。

【讨论】:

  • 这些文件是如何损坏的?是 mvn 的错误还是我以不应该使用的方式滥用 mvn?
  • 我一遍又一遍地遇到这个问题!
  • 这似乎是 Maven 3.8.1 中的一个错误。即使从本地 Maven 存储库中删除库后,该问题也一次又一次地出现。升级到最新的 Maven 3.8.3 并使用该版本进行重建解决了这个问题。
【解决方案3】:

要查找哪个文件格式错误(不必删除整个 Maven 存储库),您可以像这样调试它:

  1. java.util.Properties 中的相关行中添加断点(如错误堆栈跟踪中所述),然后在调试模式下运行任何 Maven 操作。

  1. 当代码到达该断点时,在调用堆栈中找到并选择TrackingFileManager.read(File)

  1. 现在找到导致问题的文件的路径。

  1. 该文件确实格式错误...删除该文件(Maven 将在下一次操作中重新下载它)。

  1. 正确的文件(删除并重新下载后):

【讨论】:

  • 这实际上是一个很好的答案,一步一步的详细信息可以找到确切的文件。第 1 步(在 IntelliJ 中添加断点并将其与 maven 一起使用)可以使用以下命令进行设置:spin.atomicobject.com/2020/08/20/maven-debugging-intellij
  • 如果你编译了依赖就不行了。
【解决方案4】:

我从 ~/.m2 目录中删除了所有工件并重新运行 mvn build。 这一次,构建成功!

【讨论】:

    【解决方案5】:

    发现maven指向的java版本和我用的java版本不一样。 好像maven总是指向最新版本的java。

    首先通过运行mvn --version检查是否是这个问题

    如果java版本不匹配,通过运行设置JAVA_HOME

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

    现在运行mvn --version。 Maven 应该指向正确的 Java 版本。

    下次运行mvn install时,maven会自动选取JAVA_HOME中设置的版本

    【讨论】:

      【解决方案6】:

      问题可能出在您的依赖项之一中(与 Alexey 建议的相同)。对我来说,问题是找到正确的依赖关系,使 resolver-status.properties 损坏。帮助的是在调试模式下运行 mvn clean install(使用 Intellig 配置调试)并将端点放在 Properties.java 中(当您使用 -e 或 -X 选项运行时,确切的行应该在堆栈跟踪中)。在调试中,您可以轻松找到损坏的依赖项并仅删除此依赖项而不是整个 .m2 目录

      【讨论】:

        【解决方案7】:

        实际上,这些答案中的大多数都是正确的,但有点不完整。出现消息,因为resolver-status.properties 文件已损坏并且它们包含 \u0000,如 micycle 的答案所示。它有时有助于删除损坏的文件并重新运行 maven 命令。有时问题会消失,有时不会。问题出现了为什么这些文件会损坏。好吧,看来maven在解析器中包含一个错误:https://issues.apache.org/jira/browse/MRESOLVER-216

        似乎负责解决依赖关系的多个线程的同步被破坏了,在某些情况下,多个线程解析同一个工件并且它们破坏了resolver-status.properties,如 micycle 所示。

        如果尽管删除了损坏的文件,您的构建仍未成功完成,您可能希望将解析器线程限制为一个。为此,请使用 JVM 属性:

        -Daether.metadataResolver.threads=1
        

        如果您使用 IntelliJ Idea,请使用 Settings->Build,Execution,Deployment->Maven->Runner 字段 VMOptions

        进行此更改后,请记住删除损坏的文件(或整个 .m2 目录),因为一旦文件损坏,它们将无法修复。然后重新运行您的 Maven 构建。

        【讨论】:

          【解决方案8】:

          删除 .m2 文件夹并重新安装依赖项对我有用。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2019-05-31
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-08-26
            • 1970-01-01
            • 1970-01-01
            • 2011-10-12
            相关资源
            最近更新 更多