我试图将一些 Kotlin 文件包含在一个相当大的 IntelliJ Java 项目中,并且我偶然发现了一个案例,在每次导入中我都会得到“未解析的引用”。
(简化的项目结构:
Project:
saksbehandling
- e2e
- cucumber
- src
- test
- java
-e2e
- support
- common
- src
- main
- java
- common
- testdata
Run Code Online (Sandbox Code Playgroud)
支持模块中的 Kotlin 类工作正常。common模块中的 Kotlin 类没有。
同一文件位于 /e2e/cucumber/src/test/java/e2e/support 和 /e2e/common/src/main/java/common/testdata 文件夹中。在后者中,当我尝试任何类型的导入时,我都会收到“未解析的引用”。例子:
import api.utils.ApiResourceFactory
import com.google.common.io.Resources
import e2e.utils.AdressIterator
Run Code Online (Sandbox Code Playgroud)
现在, api.utils 和 e2e.utils 未解析的引用是一回事。但是 com.google 参考资料呢?这告诉我有一些东西严重丢失或损坏。
我一直在寻找冲突的版本等,但都是同一个项目,那么问题如何与此相关呢?另外,使公共模块依赖于黄瓜模块没有帮助,而且这也不是一个好主意。
有什么想法可以解决这个可能愚蠢的新手问题吗?
顺便说一句:此外,当在公共模块中创建 Kotlin 文件时,没有导入工作,突然, cucumber模块中的工作 Kotlin 文件也开始获取对创建新文件之前一直在工作的内容的未解析引用。
更新:
使用此链接:https://www.baeldung.com/kotlin-maven-java-project来调整 .pom 文件,我能够使大部分导入工作。
然而,一些奇怪的事情仍然不起作用:
import kotlin.collections.ArrayList仍然给出“未解析的引用:ArrayLIst”
在代码中,我得到以下内容的“未解析的参考”
listOf()
educationMap[fnr] (the []'s - No set method providing array access
ComplaiuntWhoEnum::class.java.enumConstants - Unresolved reference: Java
Run Code Online (Sandbox Code Playgroud)
我什至收到有关 Unresolve reference 的错误:Int (!)
更新2:
如果我创建一个文件夹 /common/src/main/kotlin,事情看起来会更好。但是我无法将这些类导入到黄瓜模块中的类中。
如果您的构建在 IntelliJ 之外失败,您可能应该首先修复此问题。也许发布您遇到的错误和您的构建配置来获取帮助。
如果在 IntelliJ IDEA 之外一切正常,则模块的配置可能已经过时,IntelliJ 很难修复它。
到目前为止,在 IntelliJ 中重新组织模块时,有 2 个解决方案对我有用:
File > Invalidate caches / Restart| 归档时间: |
|
| 查看次数: |
12333 次 |
| 最近记录: |