有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java可运行。双击时未执行jar文件

在相当长的一段时间里,我遇到了这样一个问题:双击runnable时。它不会执行的jar文件。今天我想我应该研究一下如何解决这个问题,并阅读一些关于这个主题的SO文章

首先,我要说:

  • 这个问题发生在我公司运行WIN 8的笔记本电脑上,也发生在 我的私人WIN 10桌面
  • 我很确定大约1.5-2年前,在笔记本电脑上双击是有效的
  • 然而,在桌面上,即使是在安装之后(去年10月),双击也不起作用,可能是因为我已经尝试通过重新安装JRE来解决这个问题
  • 与各种帖子中描述的许多情况相反,我可以通过在cmd中调用“java-jar application.jar”来正确运行应用程序,但双击并尝试“用”JavaSE平台二进制文件“打开”不会导致任何结果

根据几篇帖子的建议,我尝试运行Jarfix,但现在的行为如下: 我已经为我的学士学位论文编写了一个客户机-服务器应用程序,它运行得非常好,实际上我昨天通过cmd运行了这个应用程序。使用Jarfix后,我现在可以通过双击启动服务器,而客户端在双击时不会做任何事情。我已经检查了in this post所描述的正确的文件类型关联,所有内容看起来都是正确的

当然,我也用不同的程序检查了这一点,不仅仅是用我自己的应用程序。同样的问题也出现在例如(在我的WIN 10桌面上)尝试在森林中运行生命时(对于那些不知道的人来说,这是一个非常流行的Minecraft mod pack),而在我以前的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");

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


共 (0) 个答案