繁体   English   中英

Ant:属性文件任务中格式错误的 \uxxxx 编码

[英]Ant: Malformed \uxxxx encoding in propertyfile task

我用我写的 Ant 脚本得到了下面的错误。

我已经做了一些谷歌搜索,发现问题在于包含 \u 的字符串,由于目录分隔符,它发生在 Windows 下。 我将所有这些更改为 / 但错误仍然存在。

我的脚本中肯定没有剩余的 \u 字符串。

java.lang.IllegalArgumentException: Malformed \uxxxx encoding.

执行propertyfile任务时出现错误,所以我检查了我要更改的文件。 另一方面,它包含多个 \u 字符串。 该文件与 ant 无关,它是一个 borland 项目文件 (xml),其中包含一行 [someParameter]=[someValue]。

我只想将 [someValue] 增加 1。

所以我的问题是:

我要更改的属性文件是否会导致提到的错误

如果答案是“是”,

我能做什么,除了用正则表达式任务来做(比如找到线,propertyregex-ing 值,math+1 值和正则表达式替换值)

我知道这个问题是不久前被问到的,但在我发现的另一个网站上( http://www.coderanch.com/t/107014/tools/Malformed-uxxxx-encoding-error )我偶然发现了这个问题没有答案发现由于解析的工作原理,当您应该使用“/”而不是“\”作为文件目标时,可能会发生这种情况/希望这会有所帮助。

在我的情况下,它是 maven 抛出这个错误。

[INFO] Building some-prj 1.0.0-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  0.508 s
[INFO] Finished at: 2021-08-31T08:00:30-07:00
[INFO] ------------------------------------------------------------------------
[ERROR] Malformed \uxxxx encoding.
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.

我不得不重命名 .m2 目录

mv ~/.m2 ~/m2_20210831

并重新启动 Maven 构建

mvn clean package

[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  48.927 s
[INFO] Finished at: 2021-08-31T08:04:56-07:00
[INFO] ------------------------------------------------------------------------

使用双反斜杠(“\\”),如“abc\\user”,相当于“abc\user”,可以解决问题。

转到主目录中的 .m2 目录,并为每个依赖项删除“resolver-status.properties”。 您可以使用

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

它将找到所有“resolver-status.properties”,并且 -delete 标志将删除它们。

现在重新加载 Maven 项目。

首先,您应该尝试使用调试标志运行 ant 脚本以确定哪个文件在 Eclipse 中导致问题,您可以通过以下方式执行此操作

Run > External Tools > External Tools Configurations... > Main 

并将“-d”(不带引号)添加到“参数”

然后尝试在 Eclipse 中编辑文件,因为某些编辑器(例如“写字板”)可能会弄乱文件

实际上我发现问题是由于 local.cfg 文件编码。 如果我们使用写字板或其他非代码编辑软件创建(编辑)local.cfg 文件,它会更改文件编码。 因此,当 ant 尝试加载本地配置文件时(由于 dspace-installer/build.xml 文件中的行,它需要 ASCII 字符编码的 .cfg 文件。因此,当它获取 UTF 编码文件时,会引发异常。解决方案:删除 local.cfg 文件,使用 Visual Studio 代码或其他代码编辑软件重新创建它,并编辑/编写必要的配置设置。

在此处输入图像描述

C:\Users\\{user-name}\\.m2中重命名我的存储库文件夹并再次运行该命令对我有用。

我发现了一个导致这个恼人错误的具体依赖项。 我有

<!-- https://mvnrepository.com/artifact/org.ops4j.pax.exam/pax-exam-junit4 -->
<dependency>
    <groupId>org.ops4j.pax.exam</groupId>
    <artifactId>pax-exam-junit4</artifactId>
    <version>4.13.5</version>
    <scope>test</scope>
</dependency>

将其替换为:

<!-- https://mvnrepository.com/artifact/org.ops4j.pax.exam/pax-exam-junit4 -->
<dependency>
        <groupId>org.ops4j.pax.exam</groupId>
        <artifactId>pax-exam-junit4</artifactId>
        <version>4.1.0.redhat-1</version>
        <scope>test</scope>
</dependency>

错误消失了。

我发现清除我的本地 Maven 缓存(“.m2”内的“存储库”文件夹)为我解决了这个问题。

这里有一些建议可以重命名/删除整个 .m2 文件夹,但这会删除您的 settings.xml 文件。

删除所有“resolver-status.properties”文件并重新构建项目

如果此问题与 maven 有关,那么我们只需删除“.m2”目录/路径中的“存储库文件夹”,然后再次触发项目构建。 之后它应该会成功构建。

您进入 .m2 并搜索 resolver-status.properties,然后删除所有相关文件并重新构建您的项目。 它将建立成功。

在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM