如何导入Kotlin类上的内联函数

如何导入Kotlin类上的内联函数,kotlin,mockk,Kotlin,Mockk,在项目依赖项jar中有一个kotlin文件(例如称为KotlinClass),其中包含一个内联函数 package io.pack inline fun <T> every(){ ///does stuff } 进口被确认 如果我将其导入Kotlin类: import io.pack.every 或者(无论如何,这不应该起作用,但尝试了完整性)作为 这是不被承认的 (注意:如果我使用内联函数创建自己的Kotlin文件,那么可以毫无问题地将其导入Kotlin类。问题在于从

在项目依赖项jar中有一个kotlin文件(例如称为
KotlinClass
),其中包含一个内联函数

package io.pack

inline fun <T> every(){
    ///does stuff
}
进口被确认

如果我将其导入Kotlin类:

import io.pack.every
或者(无论如何,这不应该起作用,但尝试了完整性)作为

这是不被承认的

(注意:如果我使用内联函数创建自己的Kotlin文件,那么可以毫无问题地将其导入Kotlin类。问题在于从特定项目依赖项导入时。)


什么可能会阻止将此函数导入kotlin类?

这对我很有效。我创建了一个Kotlin模块,其中包含一个名为
TopLevelStandalone.kt的文件:

package io.pack

inline fun every(){
    print("Inline")
}

fun normalFun() {
    print("Normal")
}
该项目构建的jar包含类文件和一个
META-INF/top-level standalone.kotlin_模块
,其中包含:

io.packTopLevelStandaloneKt

然后,我创建另一个Kotline模块,手动将jar添加到其依赖项中。我现在可以调用
每个
normalFun

import io.pack.every
import io.pack.normalFun

fun main(args: Array<String>) {
    every()
    normalFun()
}
导入io.pack.every
导入io.pack.normalFun
趣味主线(args:Array){
每()
normalFun()
}

这对我很有用。我创建了一个Kotlin模块,其中包含一个名为
TopLevelStandalone.kt的文件:

package io.pack

inline fun every(){
    print("Inline")
}

fun normalFun() {
    print("Normal")
}
该项目构建的jar包含类文件和一个
META-INF/top-level standalone.kotlin_模块
,其中包含:

io.packTopLevelStandaloneKt

然后,我创建另一个Kotline模块,手动将jar添加到其依赖项中。我现在可以调用
每个
normalFun

import io.pack.every
import io.pack.normalFun

fun main(args: Array<String>) {
    every()
    normalFun()
}
导入io.pack.every
导入io.pack.normalFun
趣味主线(args:Array){
每()
normalFun()
}

使用顶级函数从依赖项中分离出来的一个问题是
*.kotlin_模块
文件没有正确打包到库工件中。您可以检查在JAR中,这些文件应该作为
META-INF/*.kotlin_module
放置。如果缺少顶级声明,编译器可能无法看到库中的顶级声明。您可以在函数上尝试rmb,然后复制引用。然后复制什么?反编译的.class文件中函数的RMB/copy引用是
io.mockk.MockKKt#jar中的每个
META-INF/*.kotlin_模块都包含kotlin文件的名称(在jar中)定义函数的地方使用顶级函数从依赖项中分离出来的一件事是
*.kotlin_模块
文件没有正确打包到库工件中。您可以检查在JAR中,这些文件应该作为
META-INF/*.kotlin_module
放置。如果缺少顶级声明,编译器可能无法看到库中的顶级声明。您可以在函数上尝试rmb,然后复制引用。然后复制什么?反编译的.class文件中函数的RMB/copy引用是
io.mockk.MockKKt#jar中的每个
META-INF/*.kotlin_模块都包含定义函数的kotlin文件(在jar中)的名称谢谢:特定的库是
io.mockk
。依赖jar(在gradle:
testCompile组:'io.mockk',name:'mockk',version:'1.7.15'
)位于我的类路径中,它确实包含一个
META-INF/mockk.kotlin_模块
文件,但是
导入io.mockk.each
(我需要的函数)在所有帐户都应该使用时都不起作用(注意,我可以将其作为静态导入Java类)对我来说,它可以识别导入,但给出了以下错误“无法访问类'io.mockk.MockKStubScope'。请检查模块类路径是否缺少或存在冲突的依赖项”在jar的任何地方都找不到class
io.mockk.MockKStubScope
。虽然它在源代码树中。我的类路径上还有mockk-dsl-jvm-1.7.15.jar、mockk-agent-1.7.15.jar和“org.jetbrains.kotlin”,名字是:“kotlin reflect”,版本是:“1.2.40”。谢谢:特定的库是
io.mockk
。依赖jar(在gradle:
testCompile组中:'io.mockk',名称:'mockk',版本:'1.7.15'
)在我的类路径中,确实包含
META-INF/mockk.kotlin_模块
文件,但
导入io.mockk.each
(我需要的函数)当所有人都认为它应该(注意,我可以将其作为静态导入Java类)时,它无法识别导入,但出现以下错误“无法访问类'io.mockk.MockKStubScope'。请检查您的模块类路径是否缺少或存在冲突的依赖项”在jar的任何地方都找不到class
io.mockk.MockKStubScope
。虽然它在源代码树中。我的类路径上还有mockk-dsl-jvm-1.7.15.jar、mockk-agent-1.7.15.jar和“org.jetbrains.kotlin”,名字是:“kotlin reflect”,版本是:“1.2.40”.