2014-11-13 1 views
6

Wenn ich mein Projekt öffnen und Eclipse versucht, es zu bauen, bekomme ich diesen Fehler: ein interner Fehler aufgetreten bei: „Building-Arbeitsbereich“. java.lang.StackOverflowError.java.lang.StackOverflowError beim Bau von Sencha/ExtJS 5 Projekt

Es hört immer noch auf zu bauen (denke ich), und ich kann weitermachen. Aber ich bekomme ein "Interner Fehler" Popup, der besagt, dass ein Stack-Überlauf aufgetreten ist und dass es empfohlen wird, dass ich die Workbench verlasse. Ich ignoriere das Popup einfach.

Hier ist mein .log Ausgang:

!SESSION 2014-11-13 09:22:21.634 ----------------------------------------------- 
eclipse.buildId=4.4.0.I20140606-1215 
java.version=1.7.0_51 
java.vendor=Oracle Corporation 
BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=en_US 
Framework arguments: -product org.eclipse.epp.package.jee.product 
Command-line arguments: -os win32 -ws win32 -arch x86_64 -product org.eclipse.epp.package.jee.product -data C:\Workspaces\pvmui-ws3 

!ENTRY org.eclipse.egit.ui 2 0 2014-11-13 09:22:31.052 
!MESSAGE Warning: EGit couldn't detect the installation path "gitPrefix" of native Git. Hence EGit can't respect system level 
Git settings which might be configured in ${gitPrefix}/etc/gitconfig under the native Git installation directory. 
The most important of these settings is core.autocrlf. Git for Windows by default sets this parameter to true in 
this system level configuration. The Git installation location can be configured on the 
Team > Git > Configuration preference page's 'System Settings' tab. 
This warning can be switched off on the Team > Git > Confirmations and Warnings preference page. 

!ENTRY org.eclipse.egit.ui 2 0 2014-11-13 09:22:31.057 
!MESSAGE Warning: The environment variable HOME is not set. The following directory will be used to store the Git 
user global configuration and to define the default location to store repositories: 'C:\Users\XXXXXX'. If this is 
not correct please set the HOME environment variable and restart Eclipse. Otherwise Git for Windows and 
EGit might behave differently since they see different configuration options. 
This warning can be switched off on the Team > Git > Confirmations and Warnings preference page. 

!ENTRY org.eclipse.core.jobs 4 2 2014-11-13 09:24:25.196 
!MESSAGE An internal error occurred during: "Building workspace". 
!STACK 0 
java.lang.StackOverflowError 
    at org.eclipse.vjet.dsf.jst.declaration.JstProxyType.getName(JstProxyType.java:105) 
    at org.eclipse.vjet.dsf.jst.declaration.JstMixedType.getName(JstMixedType.java:75) 
    **THESE TWO LINES REPEAT ABOUT 1023 TIMES** 

!ENTRY org.eclipse.vjet.eclipse.core 4 0 2014-11-13 09:24:26.431 
!MESSAGE There is no jst2dltk translator for node: org.eclipse.vjet.dsf.jst.term.ObjLiteral 

!ENTRY org.eclipse.vjet.eclipse.core 4 0 2014-11-13 09:24:26.510 
!MESSAGE There is no jst2dltk translator for node: org.eclipse.vjet.dsf.jst.term.ObjLiteral 

!ENTRY org.eclipse.ui 4 4 2014-11-13 09:24:27.036 
!MESSAGE Conflicting handlers for org.eclipse.vjet.eclipse.debug.ui.launchShortcut.run: {org.eclipse.debug.internal.ui.la[email protected]6436afd6} vs {org.eclipse.debug.internal.ui.la[email protected]42523e00} 

Was kann ich tun, um dieses Problem zu vermeiden?

Antwort

2

JstMixedType scheint mehrere Typen und verkettet ihre Namen zu sammeln. In Ihrem Fall enthält es sich selbst (oder ein Proxy um sich selbst, genau gesprochen). Dies sollte nicht passieren. Dies scheint ein Fehler im VJET-Kern zu sein und sollte reported sein.

Vielleicht können Sie, um den Fehler zu umgehen, indem Sie Ihre Konfiguration/Code anzupassen. Haben Sie gemischte Typen, die sich selbst enthalten? Ist das beabsichtigt? (Es ist wahrscheinlich) Wenn nein, ändere sie.

Die einfachste Lösung ist, sorgfältig zu prüfen, die Stack-Trace und erfassen die sich wiederholendes Muster von Zeilennummern:

0

Wie mit dem Stackoverflow beschäftigen. Diese Zeilennummern zeigen an, dass der Code rekursiv aufgerufen wird. Sobald Sie diese Zeilen erkannt haben, müssen Sie Ihren Code sorgfältig untersuchen und verstehen, warum die Rekursion nie beendet wird.


Wenn Sie sich vergewissert haben, dass die Rekursion korrekt implementiert ist, können Sie die Stapelgröße, erhöhen, um eine größere Anzahl von Anrufungen zu ermöglichen. Abhängig von der installierten Java Virtual Machine (JVM) entspricht die Standardgröße des Thread-Stacks entweder 512 KB oder 1 MB. Sie können die Größe des Thread-Stacks mit dem Flag -Xss erhöhen. Dieses Flag kann entweder über die Projektkonfiguration oder über die Befehlszeile angegeben werden. Das Format des -Xss Argument ist:

-Xss<size>[g|G|m|M|k|K] 

Durch die Art und Weise scheint es sich um eine Eclipse-Bug (Lesen Sie diese ref), die in der aktuellen Version behoben wurde.