另一个 Kotlin 文件中可调用的未解决引用错误
unresolved reference error for callable in another Kotlin file
我是 Kotlin 的新手(来自 Python),我正在尝试重新创建一个井字游戏。
我正在尝试使用来自另一个文件的 class,但我在编译主文件时遇到此错误:
main.kt:2:21: error: unresolved reference: TicTacToeBoard
var tabuleiro = TicTacToeBoard()
^
在名为“tictactoe”的目录中,我有“main.kt”和“board.kt”文件:
“main.kt”文件:
fun main(args: Array<String>) {
var tabuleiro = TicTacToeBoard()
}
“board.kt”文件:
class TicTacToeBoard
另一个文件中的函数也会发生同样的情况。
我看过很多文章和视频都使用了相同的语法。
我错过了什么?为什么这不起作用?以及如何在主文件上使用另一个文件中的 classes?
编辑 1:(更多信息)
我在默认设置下使用 VSCODE 和 运行 扩展名为 code runner 的文件。
科特林信息:Kotlin version 1.6.21-release-334 (JRE 18.0.1.1+2-6)
您的代码很好,没有问题。 Kotlin 自动导入功能和 类 从同一目录中的文件(不像 python,你需要手动导入东西)。
问题是您运行如何编写代码。您正在编译 main.kt 而没有编译它需要的所有文件。
在这种情况下,您需要先编译board.kt,然后编译main.kt,然后运行 jar 文件。
例如:
$ kotlinc board.kt, main.kt -include-runtime -d main.jar
$ java -jar main.jar
.
如果您的项目增长并且以正确的顺序写入所有文件的名称变得不可行,您可以(并且应该)同时编译所有文件。
例如。使用“*”通配符:
$ kotlinc *.kt -include-runtime -d main.jar
例如。如果“*”不起作用,您可以只使用一个点“.”:
$ kotlinc . -include-runtime -d main.jar
然后你 运行 像往常一样 java 文件。
.
由于您使用 CodeRunner 运行 代码,您应该编辑其配置文件以一次编译所有文件。
第 1 步:
转到扩展市场上的扩展页面,然后单击齿轮,然后单击“扩展配置”
第 2 步:
搜索“executor map”,然后搜索“edit json”
第 3 步:
在 json 文件中,查找“kotlin”并将“$filename”编辑为点或星号(无论对您有用)
第 4 步:
保存文件,一切顺利
我是 Kotlin 的新手(来自 Python),我正在尝试重新创建一个井字游戏。
我正在尝试使用来自另一个文件的 class,但我在编译主文件时遇到此错误:
main.kt:2:21: error: unresolved reference: TicTacToeBoard
var tabuleiro = TicTacToeBoard()
^
在名为“tictactoe”的目录中,我有“main.kt”和“board.kt”文件:
“main.kt”文件:
fun main(args: Array<String>) {
var tabuleiro = TicTacToeBoard()
}
“board.kt”文件:
class TicTacToeBoard
另一个文件中的函数也会发生同样的情况。
我看过很多文章和视频都使用了相同的语法。 我错过了什么?为什么这不起作用?以及如何在主文件上使用另一个文件中的 classes?
编辑 1:(更多信息)
我在默认设置下使用 VSCODE 和 运行 扩展名为 code runner 的文件。
科特林信息:Kotlin version 1.6.21-release-334 (JRE 18.0.1.1+2-6)
您的代码很好,没有问题。 Kotlin 自动导入功能和 类 从同一目录中的文件(不像 python,你需要手动导入东西)。
问题是您运行如何编写代码。您正在编译 main.kt 而没有编译它需要的所有文件。 在这种情况下,您需要先编译board.kt,然后编译main.kt,然后运行 jar 文件。 例如:
$ kotlinc board.kt, main.kt -include-runtime -d main.jar
$ java -jar main.jar
.
如果您的项目增长并且以正确的顺序写入所有文件的名称变得不可行,您可以(并且应该)同时编译所有文件。
例如。使用“*”通配符:
$ kotlinc *.kt -include-runtime -d main.jar
例如。如果“*”不起作用,您可以只使用一个点“.”:
$ kotlinc . -include-runtime -d main.jar
然后你 运行 像往常一样 java 文件。
.
由于您使用 CodeRunner 运行 代码,您应该编辑其配置文件以一次编译所有文件。
第 1 步:
转到扩展市场上的扩展页面,然后单击齿轮,然后单击“扩展配置”
第 2 步:
搜索“executor map”,然后搜索“edit json”
第 3 步:
在 json 文件中,查找“kotlin”并将“$filename”编辑为点或星号(无论对您有用)
第 4 步: 保存文件,一切顺利