我下载并安装了XMind
,它以.zip
文件夹而不是.deb
文件的形式出现,这意味着我必须使用 bash 脚本来安装它。
我将解压的文件放入名为“.installed
我的主文件夹”的临时文件夹中。
我正在尝试为安装时附带的可执行文件创建一个桌面启动器/home/user01/.installed/xmind-8-linux/XMind_amd64/XMind
。
我创建了一个.desktop
这样的文件:
[Desktop Entry]
Version=1.0
Type=Application
Terminal=false
Exec=/home/user01/.installed/xmind-8-linux/XMind_amd64/XMind
Name=XMind
Comment=Mind mapping software
Icon=/home/user01/Pictures/Icons/new_branding_new_logo.png
我把它放进去了/usr/share/applications/
。
问题是,每当我尝试运行该应用程序时都会收到此错误:
直接单击可执行文件即可正常启动应用程序,无论文件所有者是谁(root 或用户),错误都是相同的,所以我不明白我做错了什么。任何建议都很好。
此外,错误日志显示如下:
!SESSION 2016-11-16 14:14:38.215 -----------------------------------------------
eclipse.buildId=R3.7.0.201611010032
java.version=1.8.0_111
java.vendor=Oracle Corporation
BootLoader constants: OS=linux, ARCH=x86_64, WS=gtk, NL=en_GB
Command-line arguments: -os linux -ws gtk -arch x86_64 -data ../workspace
!ENTRY org.eclipse.osgi 4 0 2016-11-16 14:14:38.410
!MESSAGE Application error
!STACK 1
java.lang.IllegalStateException: Unable to acquire application service. Ensure that the org.eclipse.core.runtime bundle is resolved and started (see config.ini).
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:78)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:388)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:243)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:673)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:610)
at org.eclipse.equinox.launcher.Main.run(Main.java:1519)
at org.eclipse.equinox.launcher.Main.main(Main.java:1492)
更新:从终端
运行按预期工作。 运行整个路径会产生错误。 发生错误时,应用程序会在目录中创建一个文件夹,该文件夹通常与可执行文件位于同一文件夹中。我仍然不明白这里发生了什么。./XMind
/home/user01/.installed/xmind-8-linux/XMind_amd64/XMind
configuration
~/
解决方案:
(感谢 Katu)以下是我解决问题的方法:
在与可执行文件相同的位置创建一个 bash 脚本xmind.sh
在文件内输入:
#!/bin/bash
(cd /home/user01/.installed/xmind-8-linux/XMind_amd64/ && ./XMind)
使用新脚本而不是可执行文件创建 .desktop 启动器。
[Desktop Entry]
Version=1.0
Type=Application
Terminal=false
Exec=/home/user01/.installed/xmind-8-linux/XMind_amd64/xmind.sh
Name=XMind
Comment=Mind mapping software
Icon=/home/user01/Pictures/Icons/new_branding_new_logo.png
答案1
当您以 运行它时./Xmind
,您的当前目录与可执行文件是同一目录Xmind
。要在文件中复制该效果.desktop
,请添加Path=
一行来设置工作目录:
Path=/home/user01/.installed/xmind-8-linux/XMind_amd64/
有关详细信息,请参阅For more information, see.desktop
关于Path
条目作用的文件规范。
我还建议将.desktop
文件从移动/usr/share/applications
到/home/user01/.local/share/applications/
,因为如果您将应用程序存储在主目录中,它可能仅适用于您,而不是系统上的所有用户。
答案2
看来 Xmind 会尝试在执行的位置创建一个文件夹。您必须在执行 .desktop 文件之前告诉它移动到该位置。来自这篇文章,尝试这样的操作:
Exec=bash -c "export PATH=$PATH:`dirname %k`; your_command"
答案3
感谢所有信息。
我遇到了同样的问题,但找到了一种使用 Arronax 简化的方法。它在此进行了描述讨论。
Arronax 可以完成这项工作,因为它可以指定应用程序(XMind)应在哪个文件夹中启动。
希望这能有所帮助,
菲尔