Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为mingw/ios/linus/其他源集导入java库的变通方法?_Java_Kotlin_Kotlin Multiplatform_Kotlin Native - Fatal编程技术网

为mingw/ios/linus/其他源集导入java库的变通方法?

为mingw/ios/linus/其他源集导入java库的变通方法?,java,kotlin,kotlin-multiplatform,kotlin-native,Java,Kotlin,Kotlin Multiplatform,Kotlin Native,我知道,依赖于为某些OS源代码集安装JVM是一个非常奇怪的用例,请允许我详细介绍一下我的用例 我正在编写一个简单的实用程序来包装对steamCMD的调用,它具有依赖于平台的安装过程。所以,我当然应该这么做 // commonMain / steamCmdGetter.kt expect interface SteamCmdGetter { fun installClient() } // [OS] / steamCmdGetter.kt actual interface SteamCmd

我知道,依赖于为某些OS源代码集安装JVM是一个非常奇怪的用例,请允许我详细介绍一下我的用例

我正在编写一个简单的实用程序来包装对steamCMD的调用,它具有依赖于平台的安装过程。所以,我当然应该这么做

// commonMain / steamCmdGetter.kt
expect interface SteamCmdGetter {
    fun installClient()
}
// [OS] / steamCmdGetter.kt
actual interface SteamCmdGetter { /* ... */ }
另一方面,我的实用程序还需要处理文件存储,例如,下载和检查存储中是否存在客户端,因此我还可以使用文件类

// commonMain / File.kt
expect interface File
我知道JB团队对其教程有明确的建议

我们建议您仅对具有平台特定依赖项的Kotlin声明使用预期声明和实际声明。最好在共享模块中实现尽可能多的功能,即使这样做需要更多的时间

然而,尽管有警告,我不希望编写MyFile实现来避免为这样一个普通任务重新发明轮子,但java.io.File在场景中占据主导地位,以至于我在Gradle/Maven上找不到任何Kotlin替代方案


这是否意味着我最终不得不写我的文件?或者是否有将Java库导入Kotlin MPP平台源集的变通方法?

首先,可以将Java库仅用于jvm和android目标,而不是Kotlin/Multiplatform提供的其他目标。事实上,这正是使用Kotlin/JVM的目标子集。Kotlin/JS和Kotlin/Native都不提供与Java的互操作性,它们有自己的互操作能力。请参阅以获取有关差异的详细信息。特别是关于使用文件。答案很可能是肯定的,你必须按照每个目标实施它。这类工作通常是特定于平台的,因为它几乎不依赖于操作系统的实现。但是,您搜索的部分功能应该在platform.posix.*中找到,即使它看起来更像C风格

另外,通过网络快速搜索,我找到了这个社区图书馆,也许会有所帮助。另外,kotlinlang Slack communityfind链接可能有一些有趣的解决方案可供分享