kotlin - 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
解决方案
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 也有同样的限制。)
推荐阅读
- node.js - Node Js 在每个路径上发送文件
- c++ - 如何将十六进制字节字符串转换为 uint8_t *array?
- java - [已解决]从 spring.start.io 创建基本示例后,请求映射返回 404 而不是映射的字符串
- android - TypeError: Network request failed only on POST method
- ios - 训练图像的纵横比是否会影响 Turi Create 创建的对象检测模型?
- recursion - DrRacket 计划合同违反预期数量
- python - Raspberry Pi 未按预期显示带有屏幕的 pygame
- python - ahtzee 上节得分
- matlab - 重写 medfilt1 MATLAB 函数以支持 codegen
- javascript - 无法在 Cheerio 中显示选择器内容