美文网首页
Program type already present lam

Program type already present lam

作者: 昊昱2018 | 来源:发表于2020-05-01 10:14 被阅读0次

这个编译异常经常会出现,一般请款下是因为某一个类或者support包重复导入多次引起,常规的解决办法,使用 " ./gradlew -q app:dependencies" 使用这个命令查看项目中的各个module所依赖的第三方工程,然后在你的APP module下找到你导入第三方依赖的位置,并使用exclude group "xxx.xxx.xxx" 操作就可以解决项目依赖重复导入的问题。

这里描述一个我这遇到的坑比较深的场景

前置条件

  • 项目支持kotlin;
  • 导入的第三方或自己开发的lib库内含有kotlin文件;
  • 本地项目的 kotlin-stdlib-jkd7, kotlin-stdlib-jdk8 等lib库均包含,
    如下图
534DC0C4-E190-46D1-A78E-21159E90B8FE.png

编译后出现的错误:
Program type already present $$xx$ lambda
项目直接减错误指示到 kotlin文件中的lambda 表达式

接下来你可能会返回检查、重写、或者切换自己lambda 表达式的写法或者直接不使用lambda表达式,但是编译的错误依旧显示这个bug;

问题的根本原因:org.jetbrains.kotlin:kotlin-stdlib-jkd7,
org.jetbrains.kotlin:kotlin-stdlib-jkd8 这两个kotlin-stdlib 在项目中出现了版本不统一,
修复建议: kotlin-stdlib-jkd7,kotlin-stdlib-jkd8 这两个版本只保留一个版本, 且需要使用 exclude group 命令主动删除第三方包中导入的
kotlin-stdlib-jkd7(8),避免第三方主动带入了kotlin-std-lib库造成项目的kotlin-stdlib-jkd的版本不统一。

如果经过上述步骤还无法修复,可以删除工程下的build, app.build这两个文件目录进行再次编译


image.png

相关文章

网友评论

      本文标题:Program type already present lam

      本文链接:https://www.haomeiwen.com/subject/mnufghtx.html