我是Kotlin的新手,所以如果这是一个简单的问题请原谅我。我正在编写一个kotlin脚本,我希望它将利用自定义Hashtable实现来存储文件中的数据。我有麻烦让脚本找到HashTable类。下面是我的结构:
.
├── scripts
│ ├── kotlin
│ │ ├── [other scripts]
│ │ └── wordcount.kts
│ └── tests
│ └── wc
│ └── smallfile.txt
└── src
├── main
│ └── kotlin
│ └── dataStructures
│ └── HashTable.kt
└── test
脚本是wordcount.kts
和类我试图import
是在HashTable.kt
。我试了试import dataStructures.HashTable
和import kotlin.dataStructures.HashTable
,但都无济于事。我还尝试将PWD(在IntelliJ运行时配置中)调整到项目目录,也没有运气。如何正确导入HashTable ?如果我能提供任何进一步的信息,请告诉我!
import
用于链接到类路径上的东西,因此在您可以使用它之前,您需要允许编译器实际找到该HashTable类。
你有几个选择,但是我建议将wordcount.kts
重命名为wordcount.main.kts
(kotlin脚本需要将可执行文件命名为x.main.kts以使大多数功能正常工作),HashTable.kt
重命名为HashTable.kts
并将其与@file:Import(<path-to-hashtable.kts>)
链接。
如果不能重命名哈希表,则需要通过将其编译为类文件并使用kotlinc -script -cp <dir-with-.class> wordcount.main.kts
将其添加到类路径来导入它。或者编译成一个jar,并在脚本中用@file:DependsOn<path-to-jar>
链接这个jar。
所有这些东西的参考,看这里:https://github.com/Kotlin/KEEP/blob/master/proposals/scripting-support.md