Kotlin-导入Jar并使用类

Kotlin-导入Jar并使用类,kotlin,gradle,intellij-idea,jar,package,Kotlin,Gradle,Intellij Idea,Jar,Package,我使用gradleinit并按照提示在kotlin中创建了一个库。它编译并生成lib/build/libs中的jar文件。然后我有另一个项目需要访问库中的函数。通过intelliJ,我通过进入项目设置>模块>依赖项并添加jar文件来添加依赖项。然后,我尝试使用import DemoLib导入库中定义的包,其中DemoLib是包的名称(以及库的名称)。这不会编译,因为它无法识别包名。我还尝试将其作为库而不是jar导入,得到了相同的结果。我怎样才能达到预期的结果 编辑:如果有帮助,代码如下: 图书馆

我使用
gradleinit
并按照提示在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作为依赖项添加之后,如果
DemoLib
是一个包

你需要

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

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

另外,最好从头开始,而且
DemoLib
不是一个好的包名:

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

你有三个选择

  • 合并同一IDE项目下的两个项目,并对项目使用渐变依赖项:
  • settings.gradle

    include 'project-lib'
    
    implementation project(':project-lib')
    
    build.gradle

    include 'project-lib'
    
    implementation project(':project-lib')
    

  • 将库安装到本地存储库中,并将其添加为渐变依赖项:

    应用插件:“maven”

  • 然后运行
    gradlepublishtoavenlocal

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

  • 将此jar用作平面库渐变依赖项(假设此jar位于
    libs
    目录中:

    存储库{ 弗拉蒂尔{ dirs'libs' } }

    依赖关系{ 实现名称:“lib jar name” }


  • 关于命名约定的要点,但即使我导入DemoLib.,我也会得到一个编译器错误。