scala - Kotlin(和 scala):方法 scala.collection.TraversableOnce.reverser$2 中没有索引为 0-0 的参数(名称=reverser$module$1 访问=16)
问题描述
我spark 3.0.1
在我的 kotlin 项目中使用。编译失败并出现以下错误:
e: org.jetbrains.kotlin.util.KotlinFrontEndException: Exception while analyzing expression at (51,45) in /home/user/project/src/main/kotlin/ModelBuilder.kt
...
Caused by: java.lang.IllegalStateException: No parameter with index 0-0 (name=reverser$module$1 access=16) in method scala.collection.TraversableOnce.reverser$2
at org.jetbrains.kotlin.load.java.structure.impl.classFiles.AnnotationsAndParameterCollectorMethodVisitor.visitParameter(Annotations.kt:48)
at org.jetbrains.org.objectweb.asm.ClassReader.readMethod(ClassReader.java:1149)
at org.jetbrains.org.objectweb.asm.ClassReader.accept(ClassReader.java:680)
at org.jetbrains.org.objectweb.asm.ClassReader.accept(ClassReader.java:392)
at org.jetbrains.kotlin.load.java.structure.impl.classFiles.BinaryJavaClass.<init>(BinaryJavaClass.kt:77)
at org.jetbrains.kotlin.load.java.structure.impl.classFiles.BinaryJavaClass.<init>(BinaryJavaClass.kt:40)
at org.jetbrains.kotlin.cli.jvm.compiler.KotlinCliJavaFileManagerImpl.findClass(KotlinCliJavaFileManagerImpl.kt:115)
at org.jetbrains.kotlin.cli.jvm.compiler.KotlinCliJavaFileManagerImpl.findClass(KotlinCliJavaFileManagerImpl.kt:85)
at org.jetbrains.kotlin.cli.jvm.compiler.KotlinCliJavaFileManagerImpl$findClass$$inlined$getOrPut$lambda$1.invoke(KotlinCliJavaFileManagerImpl.kt:113)
at org.jetbrains.kotlin.cli.jvm.compiler.KotlinCliJavaFileManagerImpl$findClass$$inlined$getOrPut$lambda$1.invoke(KotlinCliJavaFileManagerImpl.kt:48)
at org.jetbrains.kotlin.load.java.structure.impl.classFiles.ClassifierResolutionContext.resolveClass(ClassifierResolutionContext.kt:60)
at org.jetbrains.kotlin.load.java.structure.impl.classFiles.ClassifierResolutionContext.resolveByInternalName$frontend_java(ClassifierResolutionContext.kt:101)
at org.jetbrains.kotlin.load.java.structure.impl.classFiles.BinaryClassSignatureParser$parseParameterizedClassRefSignature$1.invoke(BinaryClassSignatureParser.kt:141)
我已经多次清理/重建项目,删除了构建目录并尝试使用 gradle 从命令行构建。
发生这种情况的代码:
val data = listOf(...)
val schema = StructType(arrayOf(
StructField("label", DataTypes.DoubleType, false, Metadata.empty()),
StructField("sentence", DataTypes.StringType, false, Metadata.empty())
))
val dataframe = spark.createDataFrame(data, schema) // <- offending line.
正在使用 kotlin 版本1.4.0
,升级到1.4.10
没有任何变化,仍然是同样的错误。
看起来这个错误(和这个)已经报告给 JetBrains,但真的不可能在 kotlin 1.4 中使用 spark 3(本地模式)吗?
解决方案
通过将以下内容添加到dependencyManagement,我设法使其与Spring Boot(2.3.5)一起使用:
dependencies {
dependencySet("org.scala-lang:2.12.10") {
entry("scala-library")
}
}
这会将 scala-library jar 从 2.12.12 降级到 2.12.10 版本,这与我项目中的 scala-reflect jar 版本相同。我也在使用 Kotlin 1.4.10
推荐阅读
- vue.js - 关于函数 _createElement() 中 Vue.js 源码的一个问题
- debian - 网络带宽的顶级用户
- c# - 尝试学习如何在 C# 中使用 Span 时出现错误 CS0308
- c# - 如何从枚举创建对象列表
- php - 如何为没有评论的产品显示消息而不是星级
- reactjs - 如何使用 react-table 将对象(json dict)键/值对放在行上而不是将键放在列上
- java - 基于多个条件对HashMap进行排序
- java - 在 C++ 中从二进制文件中读取
- reactjs - Fetch请求发送大量请求后台
- c# - 游戏服务器的安全 Blazor WebAssembly 设置?