如何让Eclipse在Windows 7任务栏中表现良好?

87

所有其他可以固定到任务栏的应用程序都表现良好。 但是Eclipse在右键单击时不显示最近打开的项目。 它还不允许在其中固定某些项目。 请注意,我使用的是Eclipse Helios的JS版本。加载后会生成一个新的、不同的任务栏图标。


我发现如果我从Windows资源管理器中将eclipse.exe拖到任务栏上,它也允许我将其固定。 - danca
7个回答

100

在您的eclipse.ini中指定最新可用的Java虚拟机。例如:

-vm
jdk1.6.0_10\jre\bin\client\jvm.dll
  1. 确保它们在不同的行上
  2. "vmargs"后面的任何内容都会被视为VM参数

(更多信息)

或者,您可以在Windows的"windows32"文件夹之前将Java bin文件夹添加到您的Windows PATH中,因为否则Eclipse将使用win32文件夹中的"javaw.exe"而不是JDK中的文件。


11
请参见 Bug 314805: https://bugs.eclipse.org/bugs/show_bug.cgi?id=314805#c40 我只是使用 JDK 下的 "bin" 目录,例如: -vm C:/Program Files/Java/jdk1.7.0_02/bin - usethe4ce
3
我使用的是jdk1.6.0_25版本,与“client”不同的是我有一个名为“server”的目录,其中包含“jvm.dll”。将该路径指定为“-vm”参数可在Eclipse Java EE(Indigo Service Release 2)中使用。 - Kohányi Róbert
26
起初,对我来说两个选项都没有起作用(Eclipse 4.2 32位,Windows 7 64位,JDK 1.6 32位)。然后我尝试了以下步骤: 1.右键单击eclipse.exe->属性->兼容性,启用与Windows XP Service Pack 3的兼容性模式。 2.运行Eclipse。 3.等待工作区加载完毕。 4.将其固定到任务栏。 5.关闭Eclipse。 6.从eclipse.exe中删除兼容性设置。 7.运行Eclipse。仍然无效! 8.取消固定并重新固定到任务栏。(???) 9.现在它可以正常工作了... - MarioVilas
3
我使用了第二种解决方案——将bin文件夹添加到Windows的路径中。我已经这样做了,为了让事情变得正确,我还需要取消固定Eclipse,因为在更新路径之前我已经固定了它,然后在直接从eclipse文件夹启动后重新固定它。 - Dale
1
以管理员身份运行对我有用。然后你可以在 Windows 7 的任务栏上固定,右键点击固定的快捷方式,取消“以管理员身份运行”的复选框,它就会保留并如常工作。 - biddulph.r
显示剩余7条评论

28

我在Eclipse的错误报告中使用了Riccardo的solution,但我无法从任务栏中获取最近打开的项目等。是否有人尝试过这些解决方法并恢复了该行为?

我在Windows 7 x64上使用Helios x64时遇到同样的问题,但对于我来说,以下解决方法可以与任务栏按钮选项“始终组合,隐藏标签”一起使用:

  • 检查您的“eclipse.ini”是否指定了正确的VM,并确保路径指向JDK或JRE的bin目录(而不是javaw.exe)。对于我来说,参数为“D:/Development/Languages/Java/Development Kit/bin/”(不带引号)。
  • 取消固定Eclipse的任务栏或删除快捷方式
  • 从资源管理器中运行“eclipse.exe”并选择您的工作区
  • 在启动画面加载且主窗口显示后,将Eclipse固定到任务栏

2
我在这个线程上尝试了一切,但是只有取消固定然后重新固定才奏效。 - Bill Hanson
2
关键是使用JDK bin目录路径,而不是可执行文件。谢谢。 - Greg Reynolds

15

将eclipse.exe设置为兼容模式可行。


1
哈哈,你知道吗,一开始我没有尝试这个方法,因为听起来太简单了,但这正是对我的有效。现在我可以把Helios和Indigo固定到我的任务栏上,而没有任何问题。注意:我仍然保留着.ini文件的编辑内容。谢谢!+10000000 - Jack
设置为兼容模式后,不要忘记删除“-vm”参数。当我两者都有时,Eclipse根本无法启动。 - fracz
3
在Windows 7中,通过将兼容模式设置为Windows Vista可以实现此功能。 - starryknight64
使用Eclipse Mars会不幸地导致EGit崩溃。 - Aivar

4

我想为Win10用户补充一些内容。

编辑eclipse.ini文件,在--launcher.appendVmargs:这行代码前面添加以下代码:

-vm C:/Program Files/Java/jdk1.8.0/jre/bin/server/jvm.dll

你还需要将兼容性设置为Windows Vista,才能使它正常工作。


3

我认为值得一提的是,至少对于我来说,在eclipse.ini中加入虚拟机路径时,使用正斜杠是很重要的,即使我在Windows(7)上工作。如果我使用反斜杠,则Eclipse无法启动。


3
目前在StackOverflow上提供的解决方案,没有一个简单的方法可以运行多个Eclipse并且每个Eclipse都有自己的“应用程序ID”,并使图标分组按预期工作。答案这里确实提供了对底层System.AppUserModel.ID属性的引用。
以下是一个快速的 HOWTO
  1. 像许多人在这里提到的那样,进行-vm设置
  2. 运行eclipse应用程序
  3. 右键单击运行的任务栏图标,“将此程序固定到任务栏”
  4. 导航到%AppData%\Microsoft\Internet Explorer\Quick Launch\User Pinned\Taskbar
  5. 将新创建的快捷方式复制到另一个位置。它将被命名为eclipseeclipse (2)eclipse (3)
  6. 右键单击运行的任务栏图标,“从任务栏取消固定此程序”
  7. 使用“快捷方式属性”对话框将所有单独字段(目标+参数、工作目录、图标、其他任何内容)复制到新的快捷方式中
  8. 重新命名新的快捷方式
  9. 将新的快捷方式拖到Windows任务栏
  10. 完成
以下是一个扩展的 HOWTO ,如果您想要将图标分组分离为每个单独的Eclipse实例(如果您有多个实例运行),则非常有用:
  1. 找出您的启动插件是什么,例如org.eclipse.epp.package.java_2.0.1.20130919-0803。打开该文件夹的plugin.xml文件。
  2. 编辑该文件中的以下XML位置:/plugin/extension/product/property[@name="appName"],将属性value设置为其他内容。不要使用空格,保持长度低于(直到)40。
  3. 还可以设置窗口标题:/plugin/extension/product/property[@name],将属性name设置为其他内容。
  4. 在现有的Eclipse快捷方式中添加-clean并运行一次。您会注意到Eclipse窗口标题中使用了//product/property[@name]属性。之后,您可以再次删除-clean
  5. 按照上面的快速 HOWTO
以下是关于这里正在发生什么的简要说明:
  1. 在 .lnk 文件中存储了一个属性,使用 Windows 快捷方式属性对话框无法输入。如果复制一个 .lnk 文件,则该属性将随之复制。
  2. Windows 按照相同的 System.AppUserModel.ID 属性进行分组,简称为 AppID
  3. Eclipse 在启动时没有 AppID。首先启动 JVM,然后启动 eclipse 核心/平台,然后加载启动插件。在这最后阶段,会执行 API 调用以将 AppID 设置为 plugin.xml 文件中的值。请参见上文:扩展的 HOWTO 第二项
  4. 当您将手动创建的快捷方式 .lnk 文件拖到任务栏时,Windows 无法将此 AppID 放入新的“固定”版本的 .lnk 文件中。它只能在运行时检测到。
  5. 当您启动 Eclipse 应用程序时,请右键单击运行的任务栏图标,固定到任务栏 -> 然后 Windows 将检测到 AppID 并将其存储在“固定”的 .lnk 中。但是,由于 JVM 进程重定向等原因,Windows 无法检测到命令行参数、环境、工作目录(至少在启动时),以及图标路径 + 图标索引。所以您需要:
    1. 对 .lnk 文件进行文件复制,并自行填写缺失的部分
    2. 或者使用了解 System.AppUserModel.ID 属性的快捷方式创建工具(有很多)
    3. 或者直接使用 Windows API

真诚地希望这将减少我周围工作站上 Eclipse 任务栏图标出现问题的数量,

祝好,TW


1
非常深入的回答,感谢您。 System.AppUserModel.ID 的解释是我寻找已久的! - Stefan Winkler

2

最近,Timo Kinnunen 发现了问题。

编辑 eclipse.ini 文件,找到这一行:

--launcher.appendVmargs:

并将其更改为

--launcher.appendVmargs:-vm <PATH_TO_JAVA>/jdk1.8.0/jre/bin/server/jvm.dll

这会导致JVM在与eclipse.exe相同的进程中启动,而不是作为一个子进程,并避免了带有AppUserModelIDs的主机进程的复杂性。
而且它有效!!!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接