【问题标题】:Kotlin - Import Jar and Use ClassKotlin - 导入 Jar 并使用类
【发布时间】:2021-01-28 16:47:18
【问题描述】:

我使用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 添加为依赖项之后也是如此

【问题讨论】:

    标签: kotlin gradle intellij-idea jar package


    【解决方案1】:

    你有三个选择

    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

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

    How to install a compiled by Gradle jar into the local Gradle Repository files-2.1 instead of the Maven repository?

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

      存储库{ 平面目录 { 目录'库' } }

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

    【讨论】:

      【解决方案2】:

      如果DemoLib是一个包,

      你需要

      import DemoLib.*
      

      将其所有名称导入范围。只是import DemoLib 不会做任何事情。或者更好,

      import DemoLib.SomeClass
      

      只导入一个特定名称。实际上,如果您开始输入 SomeClass(假设这是您的 DemoLib 包中的名称),IDEA 应该会建议添加导入。

      还有,一开始就跟着naming conventions比较好,DemoLib不是个好包名:

      包的名称总是小写,不要使用下划线(org.example.project)。通常不鼓励使用多词名称,但如果您确实需要使用多个词,您可以简单地将它们连接在一起或使用驼峰式 (org.example.myProject)。

      【讨论】:

      • 关于命名约定的观点,但即使我这样做import DemoLib.*,我也会收到编译器错误。
      猜你喜欢
      • 1970-01-01
      • 2021-11-08
      • 1970-01-01
      • 2018-07-04
      • 2020-03-30
      • 1970-01-01
      • 2014-04-29
      • 2019-01-20
      • 2017-05-22
      相关资源
      最近更新 更多