我在 OS X(Snow Leopard)上一直使用 Eclipse Helios(Eclipse 平台:3.6.0.I20100608-0911,Eclipse IDE for PHP Developers:1.3.0.20100617-0520),似乎只有在编辑 WordPress 博客框架的 PHP 文件时才会遇到麻烦。当我将光标移到变量或函数名称上时,通常会触发死亡沙滩球。我怀疑 Eclipse 正在尝试查找该变量/函数,并且由于某种原因导致无限循环。
有时不仅仅是变量或函数。就在今天,我试图替换所有出现的带引号的字符串。每次我点击“全部替换”时,程序都会在字符串被替换并且文本光标移动到替换位置后立即冻结。我认为移动文本光标很重要,因为当我搜索字符串(从而移动光标)时,我得到了相同的结果,但当我搜索不存在的字符串时,结果却不是这样。
我尝试禁用偏好设置中与标记事件、悬停、代码帮助等相关的所有内容。但没有任何帮助。
我的所有项目都使用 Eclipse,我发现只有 WordPress 项目才会发生这种情况。这是我的 eclipse.ini 文件:
-startup
../../../plugins/org.eclipse.equinox.launcher_1.1.0.v20100507.jar
--launcher.library
../../../plugins/org.eclipse.equinox.launcher.cocoa.macosx_1.1.0.v20100503
-product
org.eclipse.epp.package.php.product
--launcher.defaultAction
openFile
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
512m
--launcher.defaultAction
openFile
-vmargs
-Dosgi.requiredJavaVersion=1.5
-XstartOnFirstThread
-Dorg.eclipse.swt.internal.carbon.smallFonts
-XX:PermSize=128m
-XX:MaxPermSize=128m
-XX:MaxGCPauseMillis=10
-XX:MaxHeapFreeRatio=70
-XX:+UseConcMarkSweepGC
-XX:+CMSIncrementalMode
-XX:+CMSIncrementalPacing
-XX:CompileThreshold=5
-Xms128m
-Xmx512m
-Xss2m
-Xdock:icon=../Resources/Eclipse.icns
-XstartOnFirstThread
-Dorg.eclipse.swt.internal.carbon.smallFonts
-framework
../../../plugins/org.eclipse.osgi.services_3.2.100.v20100503.jar
我有 4GB 的 RAM,所以我不知道问题是否在于我没有充分利用资源。以下是我在错误日志中反复看到的内容:
!ENTRY org.eclipse.jface 2 0 2011-01-16 16:26:21.533
!MESSAGE 发生键绑定冲突。它们可能会干扰正常的加速器操作。
!SUBENTRY 1 org.eclipse.jface 2 0 2011-01-16 16:26:21.533
!MESSAGE ALT+COMMAND+QP 发生冲突:
绑定(ALT+COMMAND+QP、
ParameterizedCommand(Command(org.eclipse.ui.views.showView,Show View,
显示特定视图、
Category(org.eclipse.ui.category.views,Views,打开视图的命令、true)、
org.eclipse.ui.handlers.ShowViewHandler@2a46d1、
[Lorg.eclipse.ui.internal.commands.Parameter;@18f50c2,,true)、[Lorg.eclipse.core.commands.Parameterization;@1ff1855)、
org.eclipse.ui.defaultAcceleratorConfiguration,
org.eclipse.ui.contexts.window,,cocoa,system)
绑定(ALT+COMMAND+QP、
ParameterizedCommand(命令(org.eclipse.ui.views.showView,显示视图,
显示特定视图,
Category(org.eclipse.ui.category.views,Views,打开视图的命令,true),
org.eclipse.ui.handlers.ShowViewHandler@2a46d1,
[Lorg.eclipse.ui.internal.commands.Parameter;@18f50c2,,true),[Lorg.eclipse.core.commands.Parameterization;@96b40c),
org.eclipse.ui.defaultAcceleratorConfiguration,
org.eclipse.ui.contexts.window,,cocoa,system)!ENTRY org.eclipse.core.net 1 0 2011-01-16 16:26:22.217
!MESSAGE 系统属性 http.proxyHost 已被外部源设置为 127.0.0.1。此值将使用首选项中的值进行覆盖!ENTRY org.eclipse.core.net 1 0 2011-01-16 16:26:22.217
!MESSAGE 系统属性 http.proxyPort 已被外部源设置为 8888。此值将使用首选项中的值进行覆盖!ENTRY org.eclipse.core.net 1 0 2011-01-16 16:26:22.218
!MESSAGE 系统属性 https.proxyHost 已被外部源设置为 127.0.0.1。此值将使用首选项中的值覆盖!ENTRY org.eclipse.core.net 1 0 2011-01-16 16:26:22.219
!MESSAGE 系统属性 https.proxyPort 已被外部源设置为 8888。此值将使用首选项中的值覆盖
我对给我带来麻烦的特定脚本进行了一些实验。它是 HTML 和 PHP 的混合体,因此 Eclipse 必须同时进行 HTML 和 PHP 验证。我想知道 HTML 验证是否与此有关,所以我创建了一个新文件,复制了内容,并弄乱了 doctype 元素。我发现,如果我用通用 doctype(例如:<!DOCTYPE html>)替换格式正确的 XHTML 1.0 Strict doctype 元素,那么仅移动光标就不会导致程序崩溃。
我将所有 HTML 验证规则设置为“忽略”,但这仍然没有解决我的问题。现在,我打算使用 PHP 回显文档类型,而不是逐字输入。这似乎可以防止崩溃。我注意到,当我将光标移动到文档周围时,Eclipse 会在屏幕底部显示指向我当前位置的“xpath”。有时,在它确定我当前的路径时会有延迟。也许当它根据严格文档类型进行验证时,当我移动光标时,它无法快速计算 xpath?也许它有一个导致它崩溃的堆栈溢出。
答案1
尝试下载 Indigo 版本,看看是否还会发生这种情况……对我来说,它似乎比 Helios 更稳定,尽管它还不是一个稳定的版本