首页 > 解决方案 > Kotlin - 导入 Jar 和使用类

问题描述

我使用gradle init并按照提示在 kotlin 中创建了一个库。它在 lib/build/libs 中编译并生成一个 jar 文件。然后我有另一个项目需要访问库中的函数。通过 intelliJ,我通过转到项目设置 > 模块 > 依赖项并添加 jar 文件来添加依赖项。然后我尝试导入库中定义的包,import DemoLib其中 DemoLib 是包的名称(和库的名称)。这不会编译,因为它无法识别包名称。我也尝试过作为库而不是 jar 导入,结果相同。我怎样才能达到预期的效果?

编辑:如果它有帮助,这里是代码:

图书馆:

package DemoLib

class Library {
    fun someLibraryMethod(): Boolean {
        return true
    }
}

客户代码:

package DemoClientAppOne

import DemoLib.*



class App {
    val greeting: String
        get() {
            return "Hello World!"
        }
}

fun main() {
    println(App().greeting)
}

不是很有趣,但关键是 DemoLib 是一个未解析的引用,即使在将 jar 添加为依赖项之后也是如此

标签: kotlingradleintellij-ideajarpackage

解决方案


你有三个选择

  1. 将两个项目合并在同一个 IDE 项目下,并在项目上使用 Gradle 依赖项:

settings.gradle

include 'project-lib'

build.gradle

implementation project(':project-lib')

请参阅https://docs.gradle.org/current/userguide/declaring_dependencies.html#sub:project_dependencies

  1. 将库安装到本地存储库并将其添加为 Gradle 依赖项:

    应用插件:'maven'

然后运行gradle publishToMavenLocal

mavenLocal()并在gradle.build文件中添加存储库。

请参阅如何将 Gradle 编译的 jar 安装到本地 Gradle 存储库 files-2.1 而不是 Maven 存储库中?

  1. 将此 jar 用作平面库 Gradle 依赖项(假设此 jar 位于libs目录中:

    存储库 { flatDir { dirs 'libs' } }

    依赖项{实现名称:'lib-jar-name'}


推荐阅读