构建Sencha/ExtJS 5项目时的java.lang.StackOverflower错误

构建Sencha/ExtJS 5项目时的java.lang.StackOverflower错误,java,javascript,eclipse,extjs,Java,Javascript,Eclipse,Extjs,当我打开我的项目并且Eclipse试图构建它时,我得到了这个错误:在“构建工作区”期间发生了一个内部错误。java.lang.StackOverflowerr 它仍然完成建设(我想),我可以继续。但是我得到一个“内部错误”弹出窗口,说发生了堆栈溢出,建议我退出工作台。我只是忽略弹出窗口 以下是我的.log输出: !SESSION 2014-11-13 09:22:21.634 ----------------------------------------------- eclipse.buil

当我打开我的项目并且Eclipse试图构建它时,我得到了这个错误:在“构建工作区”期间发生了一个内部错误。java.lang.StackOverflowerr

它仍然完成建设(我想),我可以继续。但是我得到一个“内部错误”弹出窗口,说发生了堆栈溢出,建议我退出工作台。我只是忽略弹出窗口

以下是我的.log输出:

!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.launchConfigurations.LaunchShortcutExtension$LaunchCommandHandler@6436afd6} vs {org.eclipse.debug.internal.ui.launchConfigurations.LaunchShortcutExtension$LaunchCommandHandler@42523e00}
如何避免此问题?

似乎会累积多个类型并连接它们的名称。在您的情况下,它包含自身(或其周围的代理,确切地说)。这不应该发生。这似乎是VJET核心中的一个缺陷,应该予以纠正


可能您可以通过调整配置/代码来解决这个bug。你们有任何包含它们自己的混合类型吗?这是有意的吗?(可能是)如果没有,请更改它们。

如何处理StackOverflower错误:

最简单的解决方案是仔细检查堆栈跟踪并检测行号的重复模式。这些行号表示递归调用的代码。一旦检测到这些行,就必须仔细检查代码,并理解递归从未终止的原因


如果您已经验证了递归的实现是正确的,那么可以增加堆栈的大小,以便允许更多的调用。根据安装的Java虚拟机(JVM),默认线程堆栈大小可能等于512KB或1MB。可以使用-Xss标志增加线程堆栈大小。可以通过项目的配置或命令行指定此标志。
-Xss
参数的格式为:

-Xss<size>[g|G|m|M|k|K]
-Xss[g | g | m | m | k | k]
顺便说一下,这似乎是一个eclipse bug(请阅读本文),它已在最新版本中修复