我在src \ main \ scala \ week3的文件Rational.scala中定义了一个类:
package week3
class Rational(x: Int, y: Int) {
def add(that: Rational) = this + that
def add2(that: Rational) = this + that
...
}
然后我有一个week3.sc scala工作表,其中包含以下内容:
import week3.Rational
object scratch {
var r = new Rational(1, 2)
var t = new Rational(3, 4)
r < t
t.add(r)
t.add2(r)
}
编译时没有任何错误,但是在运行工作表时,我在add2方法而不是add方法上遇到此错误:
java.lang.NoSuchMethodError: week3.Rational.add2(Lweek3/Rational;)Lweek3/Rational;
at #worksheet#.#worksheet#(week3.sc:4)
我尝试过重建项目,甚至可以在Rational.class编译文件中看到字符串add2。
反正有解决此问题的方法吗?
答案 0 :(得分:0)
我尝试了您的示例,并且可以重现您在新创建的项目中提到的完全相同的错误。
我尝试在工作表中和从表中都创建一个虚拟的week3类,但是似乎没有面对IntelliJ。当我尝试使用IntelliJ的内置编译按钮进行编译时,问题消失了。
我的第一个猜测是,直到您这样说,内部编译器才被完全启动(至少不是通过工作表播放按钮,无论是处于REPL还是交互式模式)。停止编译器并清除缓存,然后意外地再次尝试使其工作,这使我相信这是工作表中运行代码的错误。
无论如何,希望我能帮上忙。
答案 1 :(得分:0)
该问题存在于2018.1中,该问题在每次对Rational类进行编辑后都需要重新启动。升级到2018.2已解决。