Ich habe diesen Fehler in meinem Hadoop-Job erhalten.
java.lang.NoSuchMethodException: <PackageName>.<ClassName>.<init>(<parameters>)
In den meisten Scala-Code, würden Sie es in der Kompilierzeit haben. Aber da dieser Job in Runtime aufgerufen wird, habe ich ihn in der Kompilierzeit nicht abgefangen.Warum Scala doppelten Konstruktor benötigt? (java.lang.NoSuchMethodException)
Ich würde denken, Standardparameter würde Konstruktoren mit beiden Signaturen verursachen, erstellt werden, wobei ein einzelnes Argument.
class BasicDynamicBlocker(args: Args, evaluation: Boolean = false) extends Job(args) with HiveAccess {
//I NEEDED THIS TOO:
def this(args: Args) = {
this(args, false)
}
... }
habe ich gelernt, auf die harte Weise, dass ich mit this
den überladenen Konstruktor zu erklären brauchte. (Ich wollte dies schreiben, falls es jemand anderem hilft.) Ich habe auch eine kleine Frage. Es erscheint mir immer noch überflüssig. Gibt es einen Grund, warum die Design-Einschränkungen der Scala-Sprache dies erfordern?
Eine gute Frage ist: Wie nennt man den Konstruktor? –