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
)
你有三个选择
settings.gradle
:
include 'project-lib'
implementation project(':project-lib')
build.gradle
:
include 'project-lib'
implementation project(':project-lib')
看
gradlepublishtoavenlocal
并在gradle.build
文件中添加mavenLocal()
存储库
看
libs
目录中:
存储库{
弗拉蒂尔{
dirs'libs'
}
}
依赖关系{
实现名称:“lib jar name”
}
关于命名约定的要点,但即使我导入DemoLib.,我也会得到一个编译器错误。