Ich bekomme eine java.lang.StackOverflowError
, wenn ich versuche, meinen Code mit mvn package
und Java 1.8.0_112 zu kompilieren und zu verpacken.StackOverflowError mit Maven 3.3.9, Java 8 und Scala 2.12
Mein Code kompiliert gut mit Java 7.
Ich versuchte JAVA_OPTS=-Xss512m
zu setzen und versuchte auch mit 1G aber immer den gleichen Fehler.
Der Code wird in Scala geschrieben und ich diese Versionen in meiner pom.xml bin mit:
<scala.version>2.10.4</scala.version>
<spark.version>1.6.0-cdh5.7.1</spark.version>
<hbase.version>1.2.0-cdh5.7.1</hbase.version>
<kafka.version>0.9.0.0</kafka.version>
<jackson.version>2.7.2</jackson.version>
<iodadm.version>05.4.1</iodadm.version>
ich auch 2.12.0 mit Scala Version versucht, weil 2.10.x mit Java 8 nicht kompatibel ist
Teil des Fehler-Stack:
INFO] java.lang.reflect.InvocationTargetException
[INFO] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[INFO] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
[INFO] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[INFO] at java.lang.reflect.Method.invoke(Method.java:498)
[INFO] at scala_maven_executions.MainHelper.runMain(MainHelper.java:164)
[INFO] at scala_maven_executions.MainWithArgsInFile.main(MainWithArgsInFile.java:26)
[ERROR] Caused by: java.lang.StackOverflowError
[INFO] at java.security.AccessController.doPrivileged(Native Method)
[INFO] at java.io.PrintWriter.<init>(PrintWriter.java:116)
[INFO] at java.io.PrintWriter.<init>(PrintWriter.java:100)
[INFO] at scala.reflect.api.Printers$class.render(Printers.scala:168)
[INFO] at scala.reflect.api.Universe.render(Universe.scala:59)
[INFO] at scala.reflect.api.Printers$class.show(Printers.scala:190)
eine weitere Sache ist Stackoverflow-Fehler in der Regel ein Fehler Ausführung Laufzeit, wie ist es möglich, sie während der Kompilierung zu bekommen?
[Hinzugefügt 1] Ich fand, dass dieser Fehler durch scala Klassen mit mindestens 150 Eigenschaften verursacht wird
[Hinzugefügt 2] Die Funktion dieser Fehler zu werfen ist Funktion ist gleich, ich entwickelte es wie folgt aus:
def equals(other:MyClass):Boolean = {
this.P1 == other.P1 &&
this.P2 == other.P2 &&
... ~ 180 similar line ...
this.P180 == other.P180
}
Vielen Dank.
Könnten Sie uns ein paar weitere Details über das '' 'StackOverflowError''' geben? Einige reproduzierbare Beispielcode wäre großartig. Ansonsten ist die Frage zu breit und ich bezweifle, dass jemand Ihnen eine wertvolle Antwort geben kann. – h3nrik
BTW: Ein '' 'StackOverflowError''' tritt normalerweise auf, wenn Sie z. endlose Rekursionen irgendwo. In diesem Fall wäre es nicht wichtig, die Stapelgröße zu erhöhen. Sie würden immer denselben Fehler erhalten, bis Sie die Ursache behoben haben. – h3nrik
@ h3nrik: Danke für den Rat. aber das Projekt ist groß und ich kann nicht wissen, welcher Teil des Codes diesen Fehler wirft. Außerdem funktioniert der Code gut mit Java 7. Ich habe die Antwort mit einem Teil des Fehlerstapels bearbeitet – bbary