【问题标题】:How do I run Kotlin libraries ( distributed via JitPack ) in a Java file?如何在 Java 文件中运行 Kotlin 库(通过 JitPack 分发)?
【发布时间】:2020-06-12 08:05:05
【问题描述】:

我为 Android 开发了一个库 Text2Summary,它是使用 Kotlin 编写的。我正在使用JitPack 分发这个库,构建过程非常顺利。

现在,在启用 Kotlin 的 Android 项目中,我可以导入库中可用的类。在只有 Java(未配置 Kotlin)的项目中,情况并非如此。在这里,Android Studio 只是抱怨 无法解析符号 Text2Summary

我已经用 Kotlin 编写了整个库,不使用 Kotlin 的开发人员抱怨同样的 cannot resolve symbol Text2Summary 错误。我应该简单地将 Kotlin 代码转换回 Java 代码,还是应该告诉用户通过 apply plugin 'kotlin' 启用 Kotlin?有效的解释也会有所帮助。

【问题讨论】:

    标签: java android kotlin jitpack


    【解决方案1】:

    我认为您忘记添加 @JvmStatic 注释以使您的方法可以从 Java 代码中调用。没有它,您必须像 Java 中的 MyObject.Companion.method1() 一样调用它。

    这是您应该添加到 companion object {} 中的公共方法的内容

    
    class Text2Summary() {
    
        companion object {
    
            // Summarizes the given text.
            @JvmStatic
            fun summarize( text : String , compressionRate : Float ): String {
                val sentences = Tokenizer.paragraphToSentence( Tokenizer.removeLineBreaks( text ) )
                val tfidfSummarizer = TFIDFSummarizer()
                val p1 = tfidfSummarizer.compute( text , compressionRate )
                return buildString( sentences , p1 )
            }
    
            // Summarizes the given text. Note, this method should be used whe you're dealing with long texts.
            // It performs the summarization on the background thread. Once the process is complete the summary is
            // passed to the SummaryCallback.onSummaryProduced callback.
            @JvmStatic
            fun summarizeAsync( text : String , compressionRate : Float , callback : SummaryCallback ) {
                SummaryTask( text , compressionRate , callback ).execute()
            }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-02-18
      • 2021-11-15
      • 2017-12-09
      • 2016-12-21
      • 2013-07-17
      • 2013-10-02
      • 2018-12-07
      • 1970-01-01
      相关资源
      最近更新 更多