【问题标题】:Kotlin in Java project, unresolved referencesJava项目中的Kotlin,未解决的引用
【发布时间】:2019-05-23 12:25:54
【问题描述】:

我正在尝试将 som Kotlin 文件包含在一个相当大的 IntelliJ Java 项目中,我偶然发现了一个案例,我在每次导入时都会得到“未解决的引用”。

(简化项目结构:

Project:
saksbehandling
- e2e 
   - cucumber
    - src
      - test
        - java
          -e2e
            - support
   - common
    - src
      - main
        - java
          - common
            - testdata
support 模块中的

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

现在,api.utils 和 e2e.utils 未解析的引用是一回事。但是 com.google 参考?这告诉我有一些东西严重丢失或损坏。

我一直在寻找冲突的版本等,但都是同一个项目,那么问题怎么可能与此相关?此外,使 common 模块依赖于 cucumber 模块也无济于事,而且这也不是一个好主意。

任何想法如何解决这个可能很愚蠢的新手问题?

顺便说一句:此外,当在 common 模块中创建 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

我什至收到有关 Unresolve 引用的错误:Int (!)

更新 2:

如果我创建一个文件夹 /common/src/main/kotlin,情况会更好。但是我无法将这些类导入黄瓜模块中的类中。

【问题讨论】:

  • 你能在 IntelliJ 之外很好地构建你的项目吗?作为一个附带问题,你在使用 Gradle 吗?是否有理由不将 Kotlin 文件放在 src/main/kotlin 中?

标签: java intellij-idea kotlin


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-16
    • 2018-06-20
    • 2018-09-07
    • 2017-11-05
    • 2018-11-21
    • 2019-12-14
    • 1970-01-01
    相关资源
    最近更新 更多