java - 双击时未执行可运行的 .jar 文件
问题描述
很长一段时间以来,我遇到了这个问题,即双击可运行的 .jar 文件时它不会执行。今天我想我应该看看解决这个问题,并阅读有关这个主题的各种 SO 文章。
首先我要说以下几点:
- 该问题出现在我公司运行 WIN 8 的笔记本电脑以及我的私人 WIN 10 桌面上
- 我很确定大约 1.5 - 2 年前在笔记本电脑上双击工作
- 然而,即使在安装后(去年 10 月)直接在桌面上双击也不起作用,可能我什至已经尝试通过重新安装 JRE 来解决问题
- 与各种帖子中描述的许多情况相反,我可以通过在 cmd 中调用“java -jar application.jar”来正确运行应用程序,但是双击 AS WELL AS 试图“使用”Java SE 平台二进制文件会导致没有任何反应
正如几篇文章所建议的那样,我尝试运行 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");
奇怪的是,这两个类都使用绝对路径,但是服务器在双击时启动,而客户端则没有。如果两者都使用相同类型的路径,它们的行为不应该完全相同吗?
解决方案
推荐阅读
- reactjs - 矩形移动到 React Konva 中的原始绘制位置
- php - 购物车系统连接到数据库
- c++ - 多变量 randn 输出的解释
- php - 一个正常工作的网站突然开始抛出连接被拒绝
- python - Flask WTForms:提交后如何刷新页面
- payment-gateway - Cybersource 支付网关以低于 2000 美元的价格交易失败
- vega - 在 Vega-lite 或 Vega-embed 中缓存数据集
- python-3.x - Chatterbot 动态训练
- android - Calling setLayoutParams() in onLayout method of custom view group does nothing
- apache - HTACCESS 上的自定义重写