这是个常见问题：java 编译时，默认会把参数名变掉（arg0, arg1...）。想要保持不变，则需要添加编译参数 `-parameters`。使用 solon-parent 作 parent，会自动添加相关配置，可避免此问题。

```xml
<!-- 注意：引入 solon-parent，可省去很多细节配置 -->
<parent>
    <groupId>org.noear</groupId>
    <artifactId>solon-parent</artifactId>
    <version>3.10.1</version>
    <relativePath />
</parent>
```

如果不方便引入 parent，可参考下面手动开启编译参数！最好在 parent 模块配置，否则需要每个模块添加。

### 1、Java 项目

* Java maven 项目

```xml
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.11.0</version>
    <configuration>
        <compilerArgument>-parameters</compilerArgument> 
        <source>${java.version}</source>
        <target>${java.version}</target>
        <encoding>UTF-8</encoding>
    </configuration>
</plugin>
```

* Java gradle 项目

```gradle
compileJava {
    options.encoding = 'UTF-8'
    options.compilerArgs << "-parameters"
}
```


### 2、Kotlin 项目

* kotlin maven 项目

```xml
<plugin>
    <artifactId>kotlin-maven-plugin</artifactId>
    <groupId>org.jetbrains.kotlin</groupId>
    <version>${kotlin.version}</version>
    <configuration>
        <args>
            <arg>-java-parameters</arg>
        </args>
    </configuration>
</plugin>
```


* Kotlin gradle 项目

在 build.gradle 的 compileKotlin 配置：

```gradle
compileKotlin {
    kotlinOptions {
        jvmTarget = '1.8' 
        javaParameters = true //保持参数名不变
    }
}
```

### 3、如果不想启用编译参数？

可以使用 `@Param(name)`、`@Path(name)` 等注解（不同的框架也会有类似的注解），来指定参数名字。

如果量大的话，还是开启 `-parameters` 更方便。
