All other apps that can be pinned to the taskbar behave well. But Eclipse doesn't show recently open projects when I right click it. It also doesn't allow to pin some projects inside it. Note that I have the JS version of Eclipse Helios. Which spawns a new and different taskbar icon after loading.
Specify the latest available Java VM in your eclipse.ini
. I.e.:
-vm
jdk1.6.0_10\jre\bin\client\jvm.dll
- Make sure they are on separate lines
- Anything after the "vmargs" is taken to be vm arguments
Or alternatively add the java bin
folder to your Windows PATH
before the "windows32" folder, because otherwise eclipse uses "javaw.exe" in the win32 folder instead of the JDK one.
client
I have a server
directory, which contains jvm.dll
. Specifying this path as the -vm
argument works with Eclipse Java EE (Indigo Service Release 2). –
Winwaloe Riccardo's solution from the Eclipse bug report worked for me, but I don't get recently opened projects, etc. from the task bar. Is anyone experiencing that these workarounds restore that behavior?
I have the same problem on Windows 7 x64 with Helios x64, but for me the following workaround works with the option "Always combine, hide labels" for taskbar buttons.
- Check your "eclipse.ini" for the specified VM and make sure the path points to the bin directory of your JDK or JRE (and not to javaw.exe). For me the argument is "D:/Development/Languages/Java/Development Kit/bin/" without quotes.
- Unpin Eclipse from the taskbar or delete the shortcut
- Run "eclipse.exe" from the explorer and choose your workspace
- Pin Eclipse to the taskbar after the splash screen was loaded and when the main window is shown
setting eclipse.exe to compatibility mode works
-vm
parameter after setting to compatibility mode. When I had both, the Eclipse didn't manage to start at all. –
Gottschalk I just want to add this for the Win10 users.
Edit eclipse.ini
to add these lines at the end before the line --launcher.appendVmargs:
-vm
C:/Program Files/Java/jdk1.8.0/jre/bin/server/jvm.dll
You need set the compatibility to Windows Vista as well in order for it to work.
I think it's important to mention that at least for me it was important to add the path to the vm in the eclipse.ini with forward slashes, even though I'm working with Windows (7, that is). Eclipse didn't start when I used backslashes.
The solutions offered here on StackOverflow so far, don't have an easy fix for running multiple Eclipses while each having their own Application ID
, and making grouping of icons work as expected. The answer here does provide a reference to the underlying System.AppUserModel.ID
property.
Here's a quick HOWTO:
- Do the
-vm
setting as plenty of people here have mentioned - Run the eclipse app
- Right click on the running taskbar icon,
Pin this program to taskbar
- Navigate to
%AppData%\Microsoft\Internet Explorer\Quick Launch\User Pinned\Taskbar
- Copy the newly created shortcut to another location. It will be named
eclipse
,eclipse (2)
, oreclipse (3)
and so on - Right click on the running taskbar icon,
Unpin this program from taskbar
- Use the Shortcut Properties dialog to copy all individual fields (target + parameters, workdir, icon, anything else) to the new shortcut
- Rename the new shortcut
- Drag the new shortcut to the Windows Taskbar
- Done
Here's an extended HOWTO, helpful if you want icon grouping separated per individual Eclipse instance (if you have multiple instances running):
- Find out what your startup plugin is, for example
org.eclipse.epp.package.java_2.0.1.20130919-0803
. Open theplugin.xml
file of that folder. - Edit the following XML location in that file:
/plugin/extension/product/property[@name="appName"]
, set attributevalue
to something else. Don't use spaces, keep length below (up until) 40. - Optionally also set the window title:
/plugin/extension/product/property[@name]
, set attributename
to something else. - In your existing Eclipse shortcut, append
-clean
and run it once. You will notice the//product/property[@name]
attribute being used in the Eclipse window title. Afterwards, you can remove-clean
again. - Follow the quick HOWTO above
A quick explanation on What's going on here:
- Inside the .lnk file, an attribute is stored, which can't be entered by using the windows Shortcut Property dialog. If you copy a .lnk file, the attribute will copy with it.
- Windows groups by identical
System.AppUserModel.ID
property,AppID
for short - Eclipse does not have an
AppID
at startup. First the JVM is started, then the eclipse core/platform is started, and then the startup plugin is loaded. In this last stage, an API call is done to set theAppID
to the value inside aplugin.xml
file. See above: extended HOWTO item 2 - When you drag a manually created shortcut .lnk file to the taskbar, it makes sense that windows can't put this
AppID
into the new 'pinned' version of the .lnk file. It can only be detected at runtime. - When you start an Eclipse application, right click on the running taskbar icon,
Pin this program to taskbar
-> then Windows will detect theAppID
and store it in the 'pinned' .lnk. But, partly because of the JVM process redirection, Windows does not detect the command-line parameters, environment, working folder (at startup at least), and the icon path + icon index. So you have to:- Do a file copy of the .lnk file and fill in the missing gaps yourself
- Or, use a shortcut creation tool that understands
System.AppUserModel.ID
properties (there are plenty) - Or, use the Windows API directly
Sincerely hope this will reduce the amount of haywire Eclipse taskbars icons on the workstations around me,
Cheers, TW
System.AppUserModel.ID
explanation is what I was looking for for quite some time! –
Aec Recently Timo Kinnunen has pinpointed the problem
Edit eclipse.ini find the line:
--launcher.appendVmargs:
and change it to
--launcher.appendVmargs:-vm <PATH_TO_JAVA>/jdk1.8.0/jre/bin/server/jvm.dll
This causes the JVM to be launched in the same process as eclipse.exe rather than as a child process and avoids the intricacies of Host Processes with AppUserModelIDs.
And it works !!!
© 2022 - 2024 — McMap. All rights reserved.