Kompilieren Sie Probleme bei der Verwendung von ant und Java 1.7
Ich versuche zu kompilieren einer code-Basis mit Hilfe von ant und die 1.7 javac-compiler.
Derzeit ist die Codebasis kompiliert mit dem 1,6-compiler, aber wenn ich auf die 1.7 compiler, bekomme ich die folgenden zwei Merkwürdigkeiten.
1) bekomme ich eine Warnung: "Warnung: x ist die interne proprietäre API und kann in einer zukünftigen Version entfernt", wobei x ist Teil eines internen proprietäre API noch die Zeile im code, auf den es verweist keine Referenz x (noch ist es Referenz x, die irgendwo in der angegebenen Datei). Dies geschah in ein paar Orte, und die Linie die Sie verweist, wird in einem Kommentar-block.
2) Die Kompilierung bricht mit der folgenden:
[javac] The system is out of resources. [javac] Consult the following stack trace for details. [javac] java.lang.StackOverflowError [javac] at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:418) [javac] at com.sun.tools.javac.comp.Attr.attribExpr(Attr.java:460) [javac] at com.sun.tools.javac.comp.Attr.visitBinary(Attr.java:2053) [javac] at com.sun.tools.javac.tree.JCTree$JCBinary.accept(JCTree.java:1565)
Relevanten Parameter, die in mein ant-Skript für javac sind:
source="1.6" target="1.6" debug="on" debuglevel="lines,vars,source" nowarn="on" fork="yes" executable="C:\Program Files\Java\jdk1.7.0_04\bin\javac" memorymaximumsize="1500m"
Ich versucht, die änderung der Quell-und der Zielversion. Ich habe auch versucht ajusting die Größe des Arbeitsspeichers. Es scheint nicht zu helfen.
- Dies ist fast sicher zu einem compiler-Fehler. Versuchen Sie eine neuere version von Java 7?
- Es sagt
stackoverflow
. weiß nicht warum, aber Sie können versuchen, verwenden Sie einen größeren Stapel... - Seine nur 1 update hinter sich und ich habe nicht gefunden, alle bekannten Probleme mit dem compiler über eine Google-Suche. Dennoch, ich werde versuchen, was Sie vorschlagen.
- Ich habe versucht, die Anpassung der maximalen Speicher und es führte noch in einen stackoverflow. Der 1,6-compiler hat keine Probleme mit der gleichen code-Basis.
- Sind Sie Zunehmender Größe stack-oder heap-Größe? müssen Sie die stack-Größe: -Xss16M oder so
- Die Erhöhung der stack-Größe, die scheint zu funktionieren. Die code-Basis zusammengestellt. Allerdings weiß ich immer noch nicht, warum bekam ich ein "x interne proprietäre API" - Warnung auf code, der es für Sie nicht gelten.
- Die interne proprietäre API Warnung klingt wie ein problem innerhalb der javac-implementation; Sie sind wohl verweisen auf eine konkrete Umsetzung, wo Sie sein sollten verweisen auf eine Schnittstelle (spec). Ich würde nicht darum kümmern.
- Es ist irgendwie komisch, da die code-Basis hat Verweise auf proprietäre APIs, nur nicht in der referenzierten Quelldateien. Der 1,6-compiler dies nicht tut. Aber es scheint nicht zu sein, dass Probleme auftreten.
- Der gleiche Fehler aufgetreten, die mit Java 1.8 compiler. Die Erhöhung der stack-Größe für javac (-Xss16m) gelöst.
- Wenn wir die Umstellung auf Java 8 wir hatten auch das gleiche Problem mit dem compiler. Wir haben es auf 5 MB und es funktioniert.
Du musst angemeldet sein, um einen Kommentar abzugeben.
(Einfach kopieren mein Kommentar zu einer Antwort, falls es sich herausstellt, um die Antwort sein.)
Das kann gut sein, eine Java 7 compiler-Fehler. Sie können jedoch geben Sie dem compiler mehr Speicher durch ausführen
javac
mit einem argument wie-Xss16M
. Das macht die thread-stack-Größe 16MB vs Standardwert von 1 MB. Es kann ein gangbarer workaround.Die Nachricht über interne APIs ist unabhängig und kann ignoriert werden.
<compilerarg value= "-J-Xss5m" />