如何创建.desktop文件来启动eclipse?

当我创建一个.desktop文件来启动eclipse(支持JDK 1.8的最新版本)时,我收到以下错误:

A Java Runtime Environment (JRE) or Java Development Kit (JDK) must be available in order to run Eclipse. No Java virtual machine was found after searching the following locations: /home/dean/bin/eclipse-standard-luna-M5-linux-gtk-x86_64/eclipse/jre/bin/java java in your current PATH 

为什么它试图在eclipse二进制文件所在的目录下找到JRE?

我可以从命令行启动Eclipse,我可以将它固定到启动器上,它可以工作。 为什么.desktop文件对它应该做的事情如此混淆?

这是我的.desktop文件:

 [Desktop Entry] Version=1.0 Name=Eclipse JDK 1.8 Comment=Eclipse Exec=/home/dean/bin/eclipse-standard-luna-M5-linux-gtk-x86_64/eclipse/eclipse Icon=/home/dean/bin/eclipse-standard-luna-M5-linux-gtk-x86_64/eclipse/icon.xpm Terminal=false Type=Application Categories=Utility;Application; 

我遇到的问题不是上面链接的问题中提到的问题 。 我的问题是因为我的JDK的PATH是在我的.bashrc中设置的。

我有同样的问题。

下一个eclipse.desktop文件适用于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 

我没有修改eclipse.ini

另一个解决方案是修改eclipse.ini文件而不修改你的eclipse.desktop

我的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 

-vm选项及其值(路径)必须位于不同的行上。

更多信息: Wiki eclipse.ini

输出确实说它也在PATH中搜索过:

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

你说你可以从一个终端启动eclipse :在这种情况下,我会说你的java被安装到一个非标准的目录,它被一个终端启动脚本(bashrc,zshrc等)添加到你的PATH中,但它是登录时未添加到您的会话中。 因此,当您在终端会话中时,您的PATH与调用.desktop文件时使用的PATH不同。

要解决此问题:

  • 要查看java的安装位置: which java
  • 如果在其中设置了具有java目录的正确PATH,请检查~/.profile 。 如果仅在.bashrc.zshrc等中设置了正确的路径,则可能在登录时未调用这些脚本,因此未正确设置PATH。 此外,如果您有~/.bash_profile~/.bash_login您也必须检查它们。 如果您提供这些文件,我们可以查看这是否是您的问题。

如果你不能这样解决,你总是可以使用env PATH= ...在.desktop文件中直接修改env PATH= ...

我已经在if [ -n "$BASH_VERSION" ]; then复制了以下块if [ -n "$BASH_VERSION" ]; then 声明:

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

我也试过没有if语句:

 . "$HOME/.bashrc" 

但Eclipse在两种情况下都失败并显示相同的错误消息。 显然,当lightdm运行~/.profile时,不会设置HOME

~/.profile明确设置路径有效,但我希望将PATH和其他Bashfunction(别名,函数)保存在同一个文件中。

解决方案是在eclipse.desktop中的Exec=env PATH=$PATH:...行上设置PATH 。 但是,我没有尝试从桌面图标启动IntelliJ。

鉴于您正在重新发明使用Unity的Linux GUI体验,可能是时候将容易出错的一系列脚本放在后面,并使用不易出错且易于使用的东西。 脚本仍然必须存在于bash shell中,但Unity桌面可以独立于它们。

我有一个非常简单的方法。

打开Gedit或文本编辑器。 加:

 [Desktop Entry] Exec=/home/testrule/eclipse/eclipse Icon=/home/testrule/eclipse/icon.xpm Type=Application 

在桌面上保存为eclipse.desktop

右键单击eclipse.desktop文件>单击属性>单击权限选项卡>>单击执行复选框