![Java 未被识别为默认应用程序](https://linux22.com/image/823590/Java%20%E6%9C%AA%E8%A2%AB%E8%AF%86%E5%88%AB%E4%B8%BA%E9%BB%98%E8%AE%A4%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F.png)
我刚刚按照本文并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)保存
.jar
6)在 nautilus 中右键单击文件,选择properties>open with>show all applications
,然后选择新条目,选择add
或set as default
。
答案2
仅供参考,有一种更简单的方法可以解决这个问题。
安装 OpenJDK Java 7 后,如果你已经/usr/share/applications
有一个.desktop
openjdk 文件,你需要做的就是更改底行
"NoDisplay=true" to "NoDisplay=false"
它将出现在默认程序列表中。
很抱歉这样劫持您的帖子。
答案3
我也用过这种方法,但 wikihow 文章漏掉了两点。我不确定这是否能解决你的问题,因为我从来没有通过双击 .jar 来运行任何东西,但值得一试:
在您的命令中将所有 Java 二进制文件(javac、javaw 等)从属于主 java 二进制文件
update-alternatives --install
。如果不这样做,只有 java 二进制文件会链接到 /usr/bin/java,其他文件都不会链接到。(我认为 wikihow 假设如果它们位于 $JAVA_HOME 中,并且 $JAVA_HOME/bin 位于路径中,系统会找到它们,但不确定)。这也使卸载变得更加容易,因为您只需update-alternatives --remove-all java
,并且所有从属二进制文件都会自动包含在内。将优先级设置为高于(而不是低于)
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 文件时,可以双击它。