首页 > 解决方案 > 双击时未执行可运行的 .jar 文件

问题描述

很长一段时间以来,我遇到了这个问题,即双击可运行的 .jar 文件时它不会执行。今天我想我应该看看解决这个问题,并阅读有关这个​​主题的各种 SO 文章。

首先我要说以下几点:

正如几篇文章所建议的那样,我尝试运行 Jarfix,但现在行为如下:我为我的学士论文编写了一个客户端-服务器应用程序,效果很好,实际上我昨天通过 cmd 运行了该应用程序。使用 Jarfix 后,我现在可以通过双击启动服务器,而客户端在双击时不会做任何事情。如本文所述,我已经检查了正确的文件类型关联,并且一切看起来都正确。

当然,我也用不同的程序检查了这一点,而不仅仅是我自己的应用程序。例如,在尝试运行 Life in the Woods 时(在我的 WIN 10 桌面上)也会出现同样的问题(对于那些不知道它的人来说,这是一个非常流行的 Minecraft 模组包),而在我之前的 WIN 10 桌面上双击时它运行得非常好.

我在这个问题上遇到的问题不是我无法通过运行 cmd 命令绕过它,而是一方面总是 cd 到所需位置并运行此命令很烦人,另一方面它很简单安装 JRE 后必须肯定能工作的东西。对于大多数人来说它是有效的,而对于少数人来说,随机的事情发生是没有任何意义的——在相同的条件下或多或少,这不是任何一种软件的行为方式。

如果有人可以帮助我解决这个问题或指出我可能忽略并忘记检查的任何事情,我会非常高兴。

编辑:

正如@VGR文件操作所指出的那样,使用相对路径可能是问题的原因,因此在使用文件操作的两种情况下:

服务器端:

File file = new File("C:/Util/authHashes.lvs");

客户端:

systemProperties.put("javax.net.ssl.keyStore", "C:/Util/auth/labkey.jks");
systemProperties.put("javax.net.ssl.keyStorePassword", "password");
systemProperties.put("javax.net.ssl.trustStore", "C:/Util/auth/labtrust.jks");

奇怪的是,这两个类都使用绝对路径,但是服务器在双击时启动,而客户端则没有。如果两者都使用相同类型的路径,它们的行为不应该完全相同吗?

标签: javaexecutable-jarexecution

解决方案


推荐阅读