How do I create a .desktop file to launch eclipse?

I had the same problem.

The next eclipse.desktop file works in Ubuntu 14.06 x64.

[Desktop Entry]
Encoding=UTF-8
Name=Eclipse
Comment=Eclipse IDE
Exec=/home/ivan/Eclipse/eclipse -vm /home/ivan/java/jdk1.7.0_25/bin/java
Icon=/home/ivan/Eclipse/icon.xpm
Categories=Application;Development;Java;IDE
Type=Application
Terminal=0

I didn't modify the eclipse.ini

Another solution is to modify the eclipse.ini file without modify your eclipse.desktop

My eclipse.ini:

-startup
plugins/org.eclipse.equinox.launcher_1.3.0.v20130327-1440.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.gtk.linux.x86_64_1.1.200.v20140116-2212
-product
org.eclipse.epp.package.standard.product
--launcher.defaultAction
openFile
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
256m
--launcher.defaultAction
openFile
-vm
/home/ivan/java/jdk1.7.0_25/bin/java
--launcher.appendVmargs
-vmargs
-Dosgi.requiredJavaVersion=1.6
-XX:MaxPermSize=256m
-Xms40m
-Xmx512m

The -vm option and its value (the path) must be on separate lines.

More info: Wiki eclipse.ini


The output does say that it searched in the PATH too:

No Java virtual machine was found after searching the following locations:
...
java in your current PATH

You said you can launch eclipse from a terminal: In this case I would say that your java is installed to a non-standard directory, which is added to your PATH by a terminal startup script (bashrc, zshrc, etc.) but it is not added to your session when you login. So when you are in a terminal session your PATH is different from the one which is used when the .desktop file is invoked.

To troubleshoot this case:

  • To see where java is installed: which java
  • Check your ~/.profile if the correct PATH with the java directory is set in it. If the correct path is only set in .bashrc, .zshrc, etc. then it is possible that those scripts are not invoked on login, so the PATH is not set correctly. Also if you have ~/.bash_profile or ~/.bash_login you have to check those too. If you provide these files we can look into this whether this is your problem.

If you can't solve it this way, you can always modify the PATH directly in the .desktop file with env PATH= ...


I've copied the following block from within the if [ -n "$BASH_VERSION" ]; then statement:

if [ -f "$HOME/.bashrc_" ]; then
    . "$HOME/.bashrc"
fi

I've also tried without the if statement:

. "$HOME/.bashrc"

but Eclipse fails with the same error message in both cases. Apparently HOME isn't set when lightdm runs ~/.profile.

Explicitly setting the path in ~/.profile works, but I want to keep my PATH and my other Bash features (aliases, functions) in the same file.

The solution is to set the PATH on the Exec=env PATH=$PATH:... line in eclipse.desktop. Nothing I've tried works to start IntelliJ from a desktop icon, however.

Given that you are reinventing the Linux GUI experience with Unity maybe it's time to leave the error prone series of scripts behind and use something that is less error prone and easier to use. The scripts would still have to be there for bash shells, but the Unity desktop could be independent of them.