如何创建.desktop文件以启动Eclipse?


12

当我创建一个.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路径是在.bashrc中设置的。


我的eclipse.desktop和该问题中的唯一区别是,他在启动eclipse时添加了一些参数。当我添加这些相同的参数时,会得到相同的错误消息。Unity .desktop文件显然无法启动Eclipse。
迪恩·舒尔兹2014年

Answers:


9

我有同样的问题。

下一个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


为什么它需要icon.xpm的完整路径?
Nicky De Maeyer 2014年

1
我在哪里放置eclipse.desktop文件?
乔纳森

1

输出确实表明它也在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
  • 检查您~/.profile是否在java目录中设置了正确的PATH 。如果仅在.bashrc.zshrc等中设置了正确的路径,则有可能在登录时未调用这些脚本,因此PATH设置不正确。另外,如果您有~/.bash_profile或者~/.bash_login也必须检查这些内容。如果您提供这些文件,我们可以调查这是否是您的问题。

如果您无法通过这种方式解决问题,则始终可以使用以下命令直接在.desktop文件中修改PATH: env PATH= ...


那正是我的问题。我在.bashrc中将PATH设置为JDK。查看文档中的.desktop文件,PATH条目似乎还有其他作用。有没有办法在.desktop中设置系统PATH?
迪恩·舒尔兹2014年

经过一番谷歌搜索后,我发现解决方案是像这样更改Exec行: Exec=env PATH=/home/dean/bin/jdk1.8.0/bin:$PATH /home/dean/bin/eclipse-standard-luna-M5-linux-gtk-x86_64/eclipse/eclipse .desktop文件的文档没有帮助。
迪恩·舒尔兹2014年

但是,对Exec = ...行的相同修改不适用于通过idea.sh文件启动IntelliJ。
迪恩·舒尔兹2014年

@DeanSchulze是的,Exec=env PATH= ...这就是我在最后一行中的意思。通常,您想在.profile中而不是.bashrc中设置PATH。.profile文件由登录外壳解析,因此在您登录时它将正确设置PATH,这样就不需要env解决方法。在Debian / Ubuntu上.profile源.bashrc,所以这应该不成问题,但是也许您的.profile没有这样做,所以请检查一下。或者,您有一个.bash_profile或.bash_login文件,该文件将覆盖.profile设置。
falconer 2014年

@DeanSchulze因此,总而言之,请在.profile中设置PATH(如果您有这些文件之一,则在.bash_profile或.bash_login中设置),而不要在.bashrc中设置,或确保.bashrc是上述文件的来源。如果以这种方式进行设置,那么.desktop文件的PATH也应该正确,并且不需要“跟踪”。
falconer 2014年

1

我从if [ -n "$BASH_VERSION" ]; then语句中复制了以下代码块:

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

我也尝试了没有if语句:

. "$HOME/.bashrc"

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

~/.profile工作中显式设置路径,但是我想将PATH和其他Bash功能(别名,函数)保留在同一文件中。

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

鉴于您正在使用Unity重塑Linux GUI体验,也许是时候抛弃容易出错的一系列脚本,而使用不太容易出错且更易于使用的东西了。bash shell仍然必须有脚本,但是Unity桌面可以独立于它们。


1

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

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

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

另存为桌面eclipse.desktop

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.