我有两个文件:Main.kt
:
package A
fun gg1() = "hello"
Main2.kt
:
package B
import A.gg1
fun gg2() = gg1()
尝试编译代码:
iv@LAPTOP:~$ tree .
.
├── A
│ └── Main.kt
└── B
└── Main2.kt
2 directories, 2 files
iv@LAPTOP:~$ kotlinc B/Main2.kt
B/Main2.kt:3:8: error: unresolved reference: A
import A.gg1
^
B/Main2.kt:5:13: error: unresolved reference: gg1
fun gg2() = gg1()
^
iv@LAPTOP:~$
- 为什么会出现此错误以及如何修复?**
1条答案
按热度按时间gxwragnw1#
你只是把
B/Main2.kt
传递给kotlinc
,如果你想让编译器知道它的存在,你还需要传递另一个文件。导入不作为文件/路径引用工作:
import A.gg1
并没有告诉编译器去寻找A/Main.kt
(它怎么知道文件名呢?)包名和文件路径之间没有技术关系,只是一个方便的约定。实际上,导入主要是为了避免在代码中使用完全限定名(因此代码本身看起来更简单),但它们本身并不是必需的,如果愿意,您可以只使用声明而不使用导入(某些特定情况除外)。
也许这个相关的问题也能提供一些启示:How does import find the file path in Kotlin?