How can I fix program icons that appear as a question mark in the Launcher?

.desktop files control the behavior of launcher shortcuts in Linux. To check the icon in use, you will need to open the appropriate .desktop file that is located in either /usr/share/applications or in ~/.local/share/applications by typing the following command: (I'm assuming you installed Eclipse from the software center, so the more likely option is in use:

sudo -H gedit /usr/share/applications/eclipse.desktop

If this file is empty, you will need to exit without saving, and substitute the path in the command. Go down to the line marked Icon= and if there are any comments in it (designated by #), remove this comment, as i have heard of a bug that causes the icon to display, however i don't know if it has been fixed as yet.

If there is no Icon= line, find an appropriate icon in .png format and put the full path in this line including the Icon=.

Edit:

From the comments, you have said that you are running this from a link on the desktop. The proper way to do this would be to create a desktop launcher and asscociate the icon from it. To do this, open a terminal and type:

gedit ~/Desktop/eclipse.desktop

this will open a blank document. To make it a launcher add this to the file, substituting the correct paths for both the Exec= and the Icon= lines:

[Desktop Entry]
Type=Application
Encoding=UTF-8
Name=Eclipse
Comment=Eclipse
Exec=<path_to_eclipse>/eclipse
Icon=<path_to_eclipse>/icon.xpm
Terminal=false
Type=Application
Categories=GNOME;Application;Development;

Save and close, then make the file executable by typing chmod +x ~/Desktop/eclipse.desktop

Now, when you open this shortcut, the icon set will appear in the launcher.


I had that problem and I fixed it (I use eclipse neon)

1) sudo gedit /usr/share/applications/eclipse.desktop

2) add the following text to the file:

[Desktop Entry]
Name=Eclipse 
Type=Application
Exec=env UBUNTU_MENUPROXY= <path_to_eclipse>/eclipse
Terminal=false
Icon=<path_to_eclipse>/icon.xpm
Comment=Integrated Development Environment
NoDisplay=false
Categories=Development;IDE;
Name[en]=eclipse.desktop

3) sudo desktop-file-install /usr/share/applications/eclipse.desktop

4) cd /usr/local/bin/

5) sudo ln -s <path_to_eclipse>/eclipse

6) sudo cp <path_to_eclipse>/icon.xpm /usr/share/pixmaps/eclipse.xpm

IT WORKS! I have no more Question mark!