二进制兼容警告
如果你使用新版本的Kotlin编译器,并且使用老版本标准库或老版本反射库,这说明你的项目被错误配置了。为了避免这些不期望的问题在编译或运行时出现,我们建议升级到最新版本或显示指定API版本或语言版本参数。否者编译器会检测到一些错误并报告一个警告。
比如。如果老版本是1.0,新版本是1.1,你可以遵守以下的警告:
在classpath中的运行时JAR文件有版本1.0,比API版本1.1版本低。考虑使用运行时版本1.1或者显示的指定-api-version 1.0。
这意味着你可以使用Kotlin编译器1.1来解决标准库或反射库的1.0版本。这可以通过不同的方式实现:
- 如果你打算使用标准库API 1.1版本,或依赖这些API的语言特性,你需要更新你的依赖至版本1.1。
- 如果你想保持你的代码与标准库1.0兼容,你可以使用-api-version 1.0。
- 如果你刚更新了Kotlin 1.1但是不使用新的语言特性,你可以使用-language-version 1.0,这将限制所有的1.1版本的API和语言特性。
在classpath中的JAR文件应该使用一样的版本。这些文件在classpath中会被找到:
kotlin-reflect.jar (version 1.0)
kotlin-stdlib.jar (version 1.1)
考略到提供显示的kotlin-reflect 1.1依赖来避免奇怪的错误。
在classpath中的一些运行时JAR文件有一个不兼容的版本,请考虑删除它们。
这意味着你可以依赖不同版本的库,比如,1.1标准库和1.0反射库。为了避免这些运行时的微妙错误,我们建议你使用一样版本的Kotlin库。在这种情况下,考略显示的指定1.1反射库版本依赖。
一些在classpath中的JAR文件必须绑定在Kotlin中的运行时库中。
这可能会引起麻烦来调试问题,如果在Kotlin运行库有不同的版本,建议删除这样的库。
这意味着classpath中的库不依赖Kotlin标准库,比如Gradle/Maven依赖。这样的库可能引起问题因为标准构建工具没有考虑其作为Kotlin标准库的实例,因此它不受制于依赖版本解决机制,你可以在classpath中得到相同库的多个版本。考虑联系这些库的作者,并且建议使用Gradle/Maven的依赖作为替换。