Java 项目中的 Kotlin,未解决的引用

0 java intellij-idea kotlin

我试图将一些 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,事情看起来会更好。但是我无法将这些类导入到黄瓜模块中的类中。

Jof*_*rey 6

如果您的构建在 IntelliJ 之外失败,您可能应该首先修复此问题。也许发布您遇到的错误和您的构建配置来获取帮助。

如果在 IntelliJ IDEA 之外一切正常,则模块的配置可能已经过时,IntelliJ 很难修复它。

到目前为止,在 IntelliJ 中重新组织模块时,有 2 个解决方案对我有用:

  • File > Invalidate caches / Restart
  • 如果第一个不起作用,请尝试删除项目,删除IDEA文件并重新导入