首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Intellij java.lang.NoSuchMethodError: scala.collection.immutable.$colon$colon.hd$1()Ljava/lang/Object

Intellij java.lang.NoSuchMethodError: scala.collection.immutable.$colon$colon.hd$1()Ljava/lang/Object
EN

Stack Overflow用户
提问于 2014-10-15 19:09:26
回答 11查看 23.2K关注 0票数 17

我有以下职能:

代码语言:javascript
复制
def removeLast(list: List[Int]): List[Int] = list match {
  case List() => List()
  case List(x) => List()
  case x :: xs => x :: removeLast(xs)
}

当我定义它并从sbt控制台使用它时,一切都很好。但是,当我在Intellij中创建一个工作表并尝试运行它时,会出现以下异常:

scala.collection.immutable.$colon$colon.hd$1()Ljava/lang/Object;:week5.A$A26$A$A26.removeLast(lists.sc8362409100671270508.tmp:30) at #worksheet#.#worksheet#(lists.sc8362409100671270508.tmp:33)

此外,当我将最后一行更改为:

代码语言:javascript
复制
case x :: xs => 1 :: removeLast(xs)}

那就成功了。

有什么问题吗?

EN

回答 11

Stack Overflow用户

回答已采纳

发布于 2014-10-16 18:23:32

我有过这个问题。同意Andrzej的观点,idea使用自己的编译器,所以您必须以某种方式禁用它。转到Settings->Scala->Worksheet并取消选中“在编译器过程中运行工作表”

票数 28
EN

Stack Overflow用户

发布于 2015-03-15 18:10:26

对我来说,任何答案都没有用。但我还是找到了一个对我有用的解决方案。这是最夸张版本的问题。在pom.xml的演讲中

代码语言:javascript
复制
  <dependency>
        <groupId>org.scalatest</groupId>
        <artifactId>scalatest_2.11</artifactId>
         <version>2.2.4</version>
         <scope>test</scope>
  </dependency>

有帮助

票数 7
EN

Stack Overflow用户

发布于 2015-03-23 20:48:46

所以,虽然上面的这些并没有解决我的问题,但它与intellij有关。

基本上,它更喜欢Scala来解析Class::方法,而不是从依赖项加载。

我用过

-verbose:class

在JVM开关中,让它告诉我它在看什么;立即提示我加入它,因为它试图从Scala加载类(它希望它从Maven中引入libs )。

实际上,我只是从我的项目设置中删除了Scala,然后问题就消失了。到目前为止,我对Scala (当然是在混合Java环境中)的经验使我相信它还有一段路要走向成熟。这是一个如此基本的类/方法,我不敢相信它在不同版本之间消失了。我安装的scala版本是2.11。很明显从maven那里拉进来的是2.10.4。

每当您看到"NoSuchMethodError“时,总是意味着存在版本冲突;这是一个为什么的问题。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26390219

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档