Java 未被识别为默认应用程序

Java 未被识别为默认应用程序

我刚刚按照本文java -version显示

java version "1.7.0_07"
Java(TM) SE Runtime Environment (build 1.7.0_07-b10)
Java HotSpot(TM) 64-Bit Server VM (build 23.3-b01, mixed mode)

update-alternatives --config java' 返回此内容:

There are 2 choices for the alternative java (providing /usr/bin/java).

  Selection    Path                                  Priority   Status
------------------------------------------------------------
  0            /usr/bin/gij-4.6                       1046      auto mode
  1            /usr/bin/gij-4.6                       1046      manual mode
* 2            /usr/local/java/jdk1.7.0_07/bin/java   1         manual mode

Press enter to keep the current choice[*], or type selection number: 

update-alternatives --config javac(或javaws)类似地返回。

但是,当我单击 .jar 文件并转到“使用应用程序打开”时,Java 并未列在默认应用程序菜单中。

  • 我尝试安装 Java这边走,并且命令的 update-alternatives 部分返回给我:

    /etc/alternatives/[java,javac,javaws] 处于悬空状态,将使用最佳选择进行更新

  • 我刚刚确认我使用Java,同样java -jar file.jar有效。

  • 只是想提一下,不知道为什么我之前没有提到,但是当我右键单击 .jar 文件时,Java 7 运行时甚至没有列出,似乎文件管理器没有将其识别为程序,但它在那里,并且确实有效......

问题的原因

经过大量的实验和研究,我找到了问题的根源 - 缺少一个.desktop文件/usr/share/applications。我发布了一个答案,您可以使用它来手动创建条目,但正如所述,不建议这样做,因为我确信有更好的方法来做到这一点。

答案1

我已经拼凑了一种方法来做到这一点,但这不是创建.desktop条目的推荐方法(必须有更好的方法来做到这一点)。

1)使用 root 权限从终端打开 Geditgksu gedit

2).desktop从中打开一个文件/usr/share/applications并将其复制到一个新文件中。

3)根据您的喜好编辑名称、评论和图像。

4)将命令更改为java -jar %u不要忘记%u

5)保存

.jar6)在 nautilus 中右键单击文件,选择properties>open with>show all applications,然后选择新条目,选择addset as default

答案2

仅供参考,有一种更简单的方法可以解决这个问题。

安装 OpenJDK Java 7 后,如果你已经/usr/share/applications有一个.desktopopenjdk 文件,你需要做的就是更改底行

"NoDisplay=true" to "NoDisplay=false"

它将出现在默认程序列表中。

很抱歉这样劫持您的帖子。

答案3

我也用过这种方法,但 wikihow 文章漏掉了两点。我不确定这是否能解决你的问题,因为我从来没有通过双击 .jar 来运行任何东西,但值得一试:

  1. 在您的命令中将所有 Java 二进制文件(javac、javaw 等)从属于主 java 二进制文件update-alternatives --install。如果不这样做,只有 java 二进制文件会链接到 /usr/bin/java,其他文件都不会链接到。(我认为 wikihow 假设如果它们位于 $JAVA_HOME 中,并且 $JAVA_HOME/bin 位于路径中,系统会找到它们,但不确定)。这也使卸载变得更加容易,因为您只需update-alternatives --remove-all java,并且所有从属二进制文件都会自动包含在内。

  2. 将优先级设置为高于(而不是低于)gij-4.6列出的任何其他值,这样系统就会默认使用该值。它们将优先级设置为 1,这是最低/最后的update-alternatives工作方式。您的优先级至少需要为 1047 或更高。我使用 1100。

我有编写安装脚本, 尝试这个并修改您的设置的目录位置(我使用 /opt/java/jdk/1.7.0_6 而不是 /usr/local/java)。

需要注意的是,脚本的最后一行将手册页安装为/usr/share/man/man.10。在运行脚本之前,请务必检查/usr/share/man并确保其中还没有man.10。如果有,请将脚本中的行更改为 man.11 或下一个最高数字。

答案4

我刚刚弄清楚了:转到 /usr/share/applications 并查找文件“defaults.list”。使用 gedit 或编辑器打开此文件并转到第 81 行,其中显示:application/x-jar=file-roller.desktop,下一行是 java-archive。将两行中的 file-roller.desktop 更改为:openjdk-7-java.desktop 并保存文件。下次要运行 .jar 文件时,可以双击它。

相关内容