Kotlin 未解决的对本地包的引用
Kotlin unresolved reference to local package
文件./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
numbers
是一个包。而且,正如错误所说,packages cannot be imported
。仅 classes、函数或属性。
如果你import numbers.sum
,你应该会发现你可以用例如sum(7, 4)
.
或者您可以直接调用其 fully-qualified 名称,无需导入:numbers.sum(7, 4)
.
和java
一样,也是一个包。您可以导入 java.util.concurrent.ConcurrentHashMap
(class),但不能导入 java
、java.util
或 java.util.concurrent
(它们都是包)。 (Java 有相同的限制。)
文件./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
numbers
是一个包。而且,正如错误所说,packages cannot be imported
。仅 classes、函数或属性。
如果你import numbers.sum
,你应该会发现你可以用例如sum(7, 4)
.
或者您可以直接调用其 fully-qualified 名称,无需导入:numbers.sum(7, 4)
.
和java
一样,也是一个包。您可以导入 java.util.concurrent.ConcurrentHashMap
(class),但不能导入 java
、java.util
或 java.util.concurrent
(它们都是包)。 (Java 有相同的限制。)