首页 > 解决方案 > Kotlin 未解决对本地包的引用

问题描述

文件./Main.kt

import numbers

fun main() {
    var value = numbers.sum(7, 4)
}

文件./numbers/Operations.kt

package numbers

fun sum(val1: Int, val2: Int): Int {
    return val1 + val2
}

运行命令kotlinc Main.kt输出:

Main.kt:1:8: error: unresolved reference: numbers
import numbers

Main.kt:4:17: error: unresolved reference: numbers
var value = numbers.sum(2, 3)

如果我尝试添加import java(我是 Kotlin 的新手,我看到有人导入了这个。我认为它是标准库的一部分),那么输出还包含:

Main.kt:1:8: error: packages cannot be imported
import java

我做错了什么?

解决方案(感谢@gidds):

需要将每个文件传递给编译器,不像 Java 编译器(javac

kotlinc Main.kt numbers/Operations.kt

标签: kotlinimportpackage

解决方案


numbers是一个包。而且,正如错误所说,packages cannot be imported. 只有类、函数或属性。

如果你import numbers.sum,你应该发现你可以用 eg 来调用它sum(7, 4)

或者您可以直接调用它的完全限定名称,而不使用 import: numbers.sum(7, 4)

同理java,也是一个包。您可以导入java.util.concurrent.ConcurrentHashMap(一个类),但不能导入java, java.util, nor java.util.concurrent(它们都是包)。(Java 也有同样的限制。)


推荐阅读