Kotlin脚本:跨目录/包导入类



我是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.HashTableimport 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

最新更新