通过.jar文件运行程序时,JOptionPanel.showMessageDialog不显示

时间:2018-11-05 22:38:17

标签: java file jar embedded-resource

我做了一些搜索以寻找问题的答案,但是没有找到与我的匹配的任何内容,也许我没有进行足够的搜索,但是我是这个网站的新手。

因此,我使用NetBeans IDE 8.0.2,并且通过IDE运行程序时,一切正常。但是,当我通过其可执行的Jar文件运行它时,我得到了前2个输入框,但最终警报没有出现。

该程序仅从输入中获取2个名称(玩家),然后为每个团队分配一个小组在FIFA中使用,该小组来自名为“ teams.txt”的外部列表。当我们玩FIFA 19时,我和我的室友都想使用它,我们想使用随机的球队,但不想被1-2星的球队困住。

 [frozenset([1,4]), frozenset([2,10]), frozenset([3,12]),frozenset([5,8]),frozenset([1])]

1 个答案:

答案 0 :(得分:0)

您不能将单个.jar文件条目读取为文件,因为它们不是单独的文件。它们只是指示压缩数据的字节子序列。这意味着您的扫描仪失败,并且您的teams集合为空,这又导致teams.get引发异常。

如果在命令行上运行.jar文件,则可以自己查看。这样的命令通常看起来像:java -jar myteamsproject.jar

属于应用程序的文件称为资源。您必须使用getResourcegetResourceAsStream类的方法来读取它:

Scanner s = new Scanner(Main.class.getResourceAsStream("teams.txt"));

类似地,您必须将资源(而不是文件名)作为URL传递给ImageIcon:

ImageIcon icon = new ImageIcon(Main.class.getResource("icon2.png"));

当然,以上行将不起作用,除非team.txt和icon2.png实际上位于.jar文件中。生成.jar文件时,应检查其内容并验证是否存在这些条目。