Kotlin同包不同文件继承抽象类提示未解析引用的原因及解决方法
错误原因
- 包名与编译根目录映射不匹配:你在代码中声明的包为
package Objecttest,Kotlin编译器默认会基于编译命令执行时的根目录,结合包名匹配对应目录下的类。如果你直接在Objecttest文件夹内执行编译命令,编译器会将当前目录识别为无名根包,此时Objecttest包对应的类需要存放在当前目录下的Objecttest子文件夹中,和你的实际文件结构冲突,自然找不到父类。 - 未同时编译依赖文件:如果你单独编译
Newclasstest.kt,没有把Abstractclasstest.kt同步加入编译任务,编译器不会主动扫描关联同目录下的其他Kotlin文件,也会触发引用未找到的错误。
解决方案
- 调整编译根目录:退到
Objecttest文件夹的上级目录执行编译命令,同时传入两个文件的路径即可:kotlinc Objecttest/Abstractclasstest.kt Objecttest/Newclasstest.kt - 同目录下批量编译:如果要在
Objecttest文件夹内直接编译,一次性传入目录下所有Kotlin文件即可:kotlinc *.kt - IDE开发适配:如果使用IDEA等IDE开发,需要将
Objecttest的上级目录设置为源集根目录(Source Root),不要直接把Objecttest设为源根,避免包名和目录映射失效。
内容的提问来源于stack exchange,提问作者Sergio
相关产品推荐
相关产品推荐

