【问题标题】:java.lang.StackOverflowError when building Sencha/ ExtJS 5 project构建 Sencha/ExtJS 5 项目时出现 java.lang.StackOverflowError
【发布时间】:2015-01-10 17:44:09
【问题描述】:

当我打开我的项目并且 Eclipse 尝试构建它时,我收到此错误:在“构建工作区”期间发生内部错误。 java.lang.StackOverflowError.

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

这是我的 .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}

我应该怎么做才能避免这个问题?

【问题讨论】:

    标签: java javascript eclipse extjs


    【解决方案1】:

    JstMixedType 似乎积累了多种类型并将它们的名称连接起来。在您的情况下,它包含自身(或自身周围的代理,确切地说)。这不应该发生。这似乎是 VJET 核心中的一个错误,应该是 reported

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

    【讨论】:

      【解决方案2】:

      StackOverflowError如何处理:

      最简单的解决方案是仔细检查堆栈跟踪并检测行号的重复模式。这些行号表示被递归调用的代码。一旦你检测到这些行,你必须仔细检查你的代码并理解为什么递归永远不会终止。


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

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

      顺便说一句,它似乎是一个 Eclipse 错误(阅读此ref),已在最新版本中修复。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-02-16
        • 1970-01-01
        • 1970-01-01
        • 2015-09-06
        • 1970-01-01
        • 2019-03-27
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多