1
fdppzrl 2021-05-26 17:52:29 +08:00 via Android
盲猜一下 implement 或者 api 的问题吧。
|
2
Lonely 2021-05-26 17:54:55 +08:00 via iPhone
可以换个版本的 gradle
|
3
heavyrainn OP @fdppzrl 请问可以具体说说么
|
4
fdppzrl 2021-05-26 18:43:37 +08:00
@heavyrainn 不好意思。打错了。应该是这两关键字 implementation 和 api 。引入依赖的时候是有区别的。这别人总结的,你可以看看能不能理解。implementation:该依赖方式所依赖的库不会传递,只会在当前 module 中生效。
api:该依赖方式会传递所依赖的库,当其他 module 依赖了该 module 时,可以使用该 module 下使用 api 依赖的库。 |
5
zerofancy 2021-05-27 08:14:13 +08:00 via Android
遇到过一次包名带 switch,switch 不是 Kotlin 的保留字但在 Java 里面无法正确 import,检查下有没有这个问题。
|
6
wjploop 2021-05-27 10:57:05 +08:00
最近遇到相似的问题,说下我的理解。
在 IDEA 的 Gradle 项目中,编译运行加载 Class 和 IDEA 索引 Class 是两套不同的东西,故存在可以编译通过而 IDEA 爆红提示没法索引到正确 Class 的情况。 如何理解证实这一点? IDEA 构建非 Gradle 项目,仍可以正确索引 Class,其代码组织结构信息放在*.iml 文件中,而在 Gradle 项目中,我们接触修改的一般是.gradle 文件,依赖信息也放在.gradle 文件中,但当 IDEA 索引相关的类时,还是需要将相关信息转化成.iml 文件来让 IDEA 获知。关于 Gradle,它扮演了一个组织配置文件信息与 IDE 无关的角色,这样 Gradle 项目可以容易导入到其他 IDE,如 Eclipse 或 VsCode 。 回到本问题,思路上应该是*.iml 未能正确生成的结果。我这边的情况是,引入了与系统类重复的 jar 包,编译运行解决的使用了-Xbootclasspath/p:xxx.jar 来告知 jvm 优先加载我的类,但这个告知信息却不能同步到*.iml 文件中,故能编译却爆红;解决方案是,自己手动去修改其中.iml 文件中 OrderEntry,OrderEntry 用来管理依赖检索顺序,将系统类的 OrderEntry 放到后面得以解决。 (居然 bb 这么多~) |