---
title: 编译Spring Boot时提示IllegalArgumentException的解决方法
description: "用例执行过程中，提示“IllegalArgumentException ：this version does not support 32Bit”。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengwebs/ecosystemEnable/SpringBoot/kunpengspringboot_02_0024.html
sourcePath: /source/zh/kunpengwebs/ecosystemEnable/SpringBoot/kunpengspringboot_02_0024.html
indexId: 87ab505c59f14406d7494d3d7c11ae0d501ed466850f073f076cab5522d1a3d780
---
# 编译Spring Boot时提示IllegalArgumentException的解决方法

#### 问题现象描述

用例执行过程中，提示“IllegalArgumentException ：this version does not support 32Bit”。


#### 关键过程、根本原因分析

编译过程中依赖的第三方包de.flapdoodle.embed.process-2.1.2.jar和de.flapdoodle.embed.mongo-2.2.0.jar并不支持ARM架构。需要下载并适配支持ARM64架构的mongo和process两个jar包。


#### 结论、解决方案及效果

1. 下载并适配支持ARM64架构的mongo和process两个JAR包。

```
wget https://mirrors.huaweicloud.com/kunpeng/maven/de/flapdoodle/embed/de.flapdoodle.embed.mongo/2.2.0/de.flapdoodle.embed.mongo-2.2.0.jar
wget https://mirrors.huaweicloud.com/kunpeng/maven/de/flapdoodle/embed/de.flapdoodle.embed.process/2.1.2/de.flapdoodle.embed.process-2.1.2.jar
```


  ARM64架构的mongo和process两个JAR包也可参考《de.flapdoodle.embed.mongo-2.2.0.jar移植指南(https://www.hikunpeng.com/document/detail/zh/kunpengwebs/ecosystemEnable/DependencyLibrary/kunpengdeflapdoodleembedmongo_02_0001.html)》和《de.flapdoodle.embed.process-2.1.2.jar移植指南(https://www.hikunpeng.com/document/detail/zh/kunpengwebs/ecosystemEnable/DependencyLibrary/kunpengdeflapdoodleembedprocess_02_0001.html)》自行编译进行替换。

2. 若缺少相关库目录，则需要先创建库目录。

```
mkdir -p /root/.m2/repository/de/flapdoodle/embed/de.flapdoodle.embed.mongo/2.2.0
mkdir -p /root/.m2/repository/de/flapdoodle/embed/de.flapdoodle.embed.process/2.1.2
```


3. 将下载的jar包移至相应目录下。

```
\cp de.flapdoodle.embed.mongo-2.2.0.jar /root/.m2/repository/de/flapdoodle/embed/de.flapdoodle.embed.mongo/2.2.0
\cp de.flapdoodle.embed.process-2.1.2.jar /root/.m2/repository/de/flapdoodle/embed/de.flapdoodle.embed.process/2.1.2
```


4. 本文以MongoDB 4.0.12版本为例，将测试用例中用到的其他版本替换掉。

```
cd spring-boot-project/spring-boot-autoconfigure
sed -i "s/3\.5\.5/4\.0\.12/g" `grep -rl "3\.5\.5"`
sed -i "s/3\.4\.1/4\.0\.12/g" `grep -rl "3\.4\.1"`
sed -i "s/3_4_15/4_0_12/g" `grep -rl "3_4_15"`
cd ../../
```


5. 创建“/root/.embedmongo/extracted/Linux-B64--4.0.12”目录。

```
mkdir -p /root/.embedmongo/extracted/Linux-B64--4.0.12
```


6. 参考《MongoDB 4.0.12 移植指南(https://www.hikunpeng.com/document/detail/zh/kunpengdbs/ecosystemEnable/MongoDB/openmind_mangodb3613_02_0001.html)》中的MongoDB编译，编译MongoDB。
7. 将本地仓库目录下的MongoDB用编译成功后的MongoDB替换掉。

```
\cp /usr/local/mongo/bin/mongod /root/.embedmongo/extracted/Linux-B64--4.0.12  && mv /root/.embedmongo/extracted/Linux-B64--4.0.12/mongod /root/.embedmongo/extracted/Linux-B64--4.0.12/extractmongod
```


  如果使用了其他版本的MongoDB，则de.flapdoodle.embed.mongo-2.2.0.jar需要参见《de.flapdoodle.embed.mongo-2.2.0.jar 移植指南(https://www.hikunpeng.com/document/detail/zh/kunpengwebs/ecosystemEnable/DependencyLibrary/kunpengdeflapdoodleembedmongo_02_0001.html)》自行编译并替换，否则可能会由于版本不同而导致报错。

8. 由于MongoDB 4.0版本以上在设置“replSetName”后，“NoJournal”必须设置为“false”，还需要修改EmbeddedMongoAutoConfiguration.java文件。

  a. 修改EmbeddedMongoAutoConfiguration.java源码。

```
vim ./spring-boot-project/spring-boot-autoconfigure//src/main/java/org/springframework/boot/autoconfigure/mongo/embedded/EmbeddedMongoAutoConfiguration.java
```


  b. 按“i”进入编辑模式，增加如下代码内容。

    - 在第32行的下一行新增如下内容。

```
import de.flapdoodle.embed.mongo.config.MongoCmdOptionsBuilder;
```


    - 在第133行的下一行新增如下代码。

```
if (replSetName != null) {
MongoCmdOptionsBuilder optionsBuilder = new MongoCmdOptionsBuilder();
optionsBuilder.useNoJournal(false);
builder.cmdOptions(optionsBuilder.build());
}
```


      请使用:set list检查格式。不能出现空格，请使用Tab作为代码缩进。

  c. 按“Esc”键，输入:wq!，按“Enter”保存并退出编辑。
