scala - 斯卡拉。实例化 trait 时出现 NoSuchMethodException
问题描述
在重构了一些项目之后,当调用一个实现 Spring Boot 应用程序特征的 scala 类时,II 得到了以下异常
22 年 8 月 6 日 13:32:26 错误 SpringApplication:应用程序启动失败 org.springframework.beans.factory.BeanCreationException:在 URL [jar:file:/home/xxxx/environment/spark 中定义名称为“MLController”的 bean 创建错误-2.2.1-bin-hadoop2.7/./xxxx/ikodaanalysis-mlserver-0.1.0.jar!/xxx/mlserver/MLController.class]:实例化bean失败;嵌套异常是 org.springframework.beans.BeanInstantiationException:无法实例化 [xxx.mlserver.MLController]:构造函数抛出异常;嵌套异常是 java.lang.NoSuchMethodError: ikoda.utilobjects.SparkConfProviderWithStreaming.$init$(Lxxx/utilobjects/SparkConfProviderWithStreaming;)V
我检查了依赖项,一切似乎都存在于 jar 中。那么为什么我会得到例外?
解决方案
我在这里找到了答案。我觉得这可能是一个相当普遍的问题,值得报告 SO。
我认为这是 Java 8 和 Scala 2.12 期望在 ScalaDsl.class 文件(新样式 Traits 作为接口)而不是在 ScalaDsl$class.class 文件(旧样式 Traits 作为接口和支持类)中找到“init”方法.
......我认为Scala 2.12包需要在Java 8下编译(不仅仅是运行)以避免这个问题。
推荐阅读
- firebase - 如何在移动设备上使用浏览器打开 Firebase pdf?
- java - 转换 HttpServletRequest.getParameterMap() [Map
] 到地图 > 使用 Java 流 - javascript - Jquery 名称 '' is 在当前上下文中不存在
- r - 选择“机器”列匹配的数据表行和不同数据表中的“每周销售额”>“每周销售额”
- sql - 如果未设置 WHERE 子句,则忽略 MS ACCESS 查询中的列
- javascript - 我无法运行输入数字的最小值和最大值
- indexing - (Cosmos DB) 复合索引中的系统函数是范围过滤器吗?
- angular - 那里有在 Angular 较新版本上添加交互式 D3 js v6 图表的任何实用指南
- sql - ORDER BY 的意外结果
- redis - Redis 集群裂脑场景