Eclipse зависает при копировании / вставке в файлы JavaScript

Я запускал Eclipse Helios 3.6, используя IDE Java/CFEclipse, и обнаруживал некоторые очень странные и усугубляющие ошибки при попытке редактировать файлы Javascript. После того, как файл.js достигнет определенного размера (~250 строк кода), Eclipse будет случайным образом зависать всякий раз, когда я пытаюсь выбрать, скопировать-вставить выделенные элементы или сохранить. Нажатие после начала зависания приведет к тому, что панель "источник редактирования файла... справка" будет удалена, а повторный щелчок приведет к появлению сообщения "не отвечает" окна, отображаемого в заголовке программы. Затем зависание проходит через 5-10 секунд ожидания. Это относится ко всем файлам JavaScript, которые я пытаюсь редактировать, хотя более короткие из них не зависают так долго и не вызывают сообщение "(не отвечает)".

Я думал, что это была проблема с параметрами проверки / автозаполнения Javascript, и соответственно отключил их; Однако проблема с копированием-вставкой все еще сохраняется. Я также пробовал Javascript IDE - та же проблема. Это проблема с обработкой Eclipse Javascript, точка? Кто-нибудь еще получил такие ошибки? И если это принципиально проблема Eclipse, сможет ли кто-нибудь предложить лучший редактор Javascript/Coldfusion?

РЕДАКТИРОВАТЬ: Для получения дополнительной информации, журнал выходных данных от последнего зависания:

!ENTRY org.eclipse.wst.jsdt.ui 4 2 2010-08-18 11:25:54.699
!MESSAGE Problems occurred when invoking code from plug-in: "org.eclipse.wst.jsdt.ui".
!STACK 0
java.lang.NullPointerException
    at org.eclipse.wst.jsdt.internal.compiler.lookup.ArrayBinding.getExactMethod(ArrayBinding.java:233)
    at org.eclipse.wst.jsdt.internal.compiler.lookup.Scope.findExactMethod(Scope.java:401)
    at org.eclipse.wst.jsdt.internal.compiler.lookup.Scope.getMethod(Scope.java:1813)
    at org.eclipse.wst.jsdt.internal.compiler.ast.MessageSend.resolveType(MessageSend.java:307)
    at org.eclipse.wst.jsdt.internal.compiler.ast.Expression.resolve(Expression.java:477)
    at org.eclipse.wst.jsdt.internal.compiler.ast.Block.resolve(Block.java:89)
    at org.eclipse.wst.jsdt.internal.compiler.ast.ForStatement.resolve(ForStatement.java:280)
    at org.eclipse.wst.jsdt.internal.compiler.ast.Block.resolve(Block.java:89)
    at org.eclipse.wst.jsdt.internal.compiler.ast.ForStatement.resolve(ForStatement.java:280)
    at org.eclipse.wst.jsdt.internal.compiler.ast.Block.resolve(Block.java:89)
    at org.eclipse.wst.jsdt.internal.compiler.ast.IfStatement.resolve(IfStatement.java:191)
    at org.eclipse.wst.jsdt.internal.compiler.ast.AbstractMethodDeclaration.resolveStatements(AbstractMethodDeclaration.java:337)
    at org.eclipse.wst.jsdt.internal.compiler.ast.MethodDeclaration.resolveStatements(MethodDeclaration.java:139)
    at org.eclipse.wst.jsdt.internal.compiler.ast.AbstractMethodDeclaration.resolve(AbstractMethodDeclaration.java:291)
    at org.eclipse.wst.jsdt.internal.compiler.ast.AbstractMethodDeclaration.resolve(AbstractMethodDeclaration.java:362)
    at org.eclipse.wst.jsdt.internal.compiler.ast.CompilationUnitDeclaration.resolve(CompilationUnitDeclaration.java:394)
    at org.eclipse.wst.jsdt.core.dom.JavaScriptUnitResolver.resolve(JavaScriptUnitResolver.java:859)
    at org.eclipse.wst.jsdt.core.dom.JavaScriptUnitResolver.resolve(JavaScriptUnitResolver.java:527)
    at org.eclipse.wst.jsdt.core.dom.ASTParser.internalCreateAST(ASTParser.java:862)
    at org.eclipse.wst.jsdt.core.dom.ASTParser.createAST(ASTParser.java:647)
    at org.eclipse.wst.jsdt.internal.ui.javaeditor.ASTProvider$1.run(ASTProvider.java:581)
    at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
    at org.eclipse.wst.jsdt.internal.ui.javaeditor.ASTProvider.createAST(ASTProvider.java:574)
    at org.eclipse.wst.jsdt.internal.ui.javaeditor.ASTProvider.getAST(ASTProvider.java:509)
    at org.eclipse.wst.jsdt.internal.ui.viewsupport.SelectionListenerWithASTManager$PartListenerGroup.calculateASTandInform(SelectionListenerWithASTManager.java:150)
    at org.eclipse.wst.jsdt.internal.ui.viewsupport.SelectionListenerWithASTManager$3.run(SelectionListenerWithASTManager.java:135)
    at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)

!ENTRY org.eclipse.wst.jsdt.ui 4 0 2010-08-18 11:25:54.824
!MESSAGE Error in JSDT Core during AST creation
!STACK 0
java.lang.NullPointerException
    at org.eclipse.wst.jsdt.internal.compiler.lookup.ArrayBinding.getExactMethod(ArrayBinding.java:233)
    at org.eclipse.wst.jsdt.internal.compiler.lookup.Scope.findExactMethod(Scope.java:401)
    at org.eclipse.wst.jsdt.internal.compiler.lookup.Scope.getMethod(Scope.java:1813)
    at org.eclipse.wst.jsdt.internal.compiler.ast.MessageSend.resolveType(MessageSend.java:307)
    at org.eclipse.wst.jsdt.internal.compiler.ast.Expression.resolve(Expression.java:477)
    at org.eclipse.wst.jsdt.internal.compiler.ast.Block.resolve(Block.java:89)
    at org.eclipse.wst.jsdt.internal.compiler.ast.ForStatement.resolve(ForStatement.java:280)
    at org.eclipse.wst.jsdt.internal.compiler.ast.Block.resolve(Block.java:89)
    at org.eclipse.wst.jsdt.internal.compiler.ast.ForStatement.resolve(ForStatement.java:280)
    at org.eclipse.wst.jsdt.internal.compiler.ast.Block.resolve(Block.java:89)
    at org.eclipse.wst.jsdt.internal.compiler.ast.IfStatement.resolve(IfStatement.java:191)
    at org.eclipse.wst.jsdt.internal.compiler.ast.AbstractMethodDeclaration.resolveStatements(AbstractMethodDeclaration.java:337)
    at org.eclipse.wst.jsdt.internal.compiler.ast.MethodDeclaration.resolveStatements(MethodDeclaration.java:139)
    at org.eclipse.wst.jsdt.internal.compiler.ast.AbstractMethodDeclaration.resolve(AbstractMethodDeclaration.java:291)
    at org.eclipse.wst.jsdt.internal.compiler.ast.AbstractMethodDeclaration.resolve(AbstractMethodDeclaration.java:362)
    at org.eclipse.wst.jsdt.internal.compiler.ast.CompilationUnitDeclaration.resolve(CompilationUnitDeclaration.java:394)
    at org.eclipse.wst.jsdt.core.dom.JavaScriptUnitResolver.resolve(JavaScriptUnitResolver.java:859)
    at org.eclipse.wst.jsdt.core.dom.JavaScriptUnitResolver.resolve(JavaScriptUnitResolver.java:527)
    at org.eclipse.wst.jsdt.core.dom.ASTParser.internalCreateAST(ASTParser.java:862)
    at org.eclipse.wst.jsdt.core.dom.ASTParser.createAST(ASTParser.java:647)
    at org.eclipse.wst.jsdt.internal.ui.javaeditor.ASTProvider$1.run(ASTProvider.java:581)
    at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
    at org.eclipse.wst.jsdt.internal.ui.javaeditor.ASTProvider.createAST(ASTProvider.java:574)
    at org.eclipse.wst.jsdt.internal.ui.javaeditor.ASTProvider.getAST(ASTProvider.java:509)
    at org.eclipse.wst.jsdt.internal.ui.viewsupport.SelectionListenerWithASTManager$PartListenerGroup.calculateASTandInform(SelectionListenerWithASTManager.java:150)
    at org.eclipse.wst.jsdt.internal.ui.viewsupport.SelectionListenerWithASTManager$3.run(SelectionListenerWithASTManager.java:135)
    at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)

3 ответа

Для меня решение было отключить эту опцию...

Настройки /JavaScript/ Редактор / Печатание {При вставке}/ Обновление импорта

Хорошо, я думаю, что нашел решение для грубой силы. Я вошел в windows> предпочтения>javascript>[все подменю] и просто снял галочку с столько вещей, сколько смог снять. Я сделал это пару недель назад, и с тех пор он завис только один раз (я думаю, что это было не связано, так как мне пришлось принудительно выйти через 5 минут).

Впервые встретился, когда Eclipse зависает при копировании / вырезании файлов JavaScript и https://github.com/Nodeclipse/nodeclipse-1/issues/159

Текущее резюме:

  • размер имеет значение: большой проект может привести к зависанию Eclipse JSDT (это старая проблема, поскольку @andreialecu собрала https://github.com/Nodeclipse/nodeclipse-1/issues/159)
  • молоток 100% решение состоит в том, чтобы удалить JsNature для этого одного проекта
  • более тонким является отключение только некоторых функций JSDT
    Window>Preferences>JavaScript>Editor>Mark Occurrencesи может быть даже Window->Preferences->General->Editors->Text Editors->Hyperlinking
  • рекомендуется сопровождающими JSDT (для дальнейшего наблюдения): (@vrubezhny)
    • получить последнюю версию JSDT
    • увеличить доступные настройки памяти
  • используйте фильтры ресурсов, чтобы скрыть больше файлов в папках, таких как build/dist/bower/vendor (автор @ppartida)

И вообще:

  • обратите внимание, какой шаг вы предприняли при работе с любым программным обеспечением.
  • Эксперимент с небольшими изменениями

Пожалуйста, добавьте больше ответов здесь (первый вопрос, поднятый 18 августа 2010 г.)

Другие вопросы по тегам