2011-05-06 164 views
0

我在Java项目的“src”文件夹中添加了“Images”文件夹。当jar通过命令行运行但在运行时通过Netbean运行时,相对路径不起作用

用于在标题栏上设置左上方的图像我正在使用来自图像文件夹的图像。 要做到这一点我已经写代码 Image img=Toolkit.getDefaultToolkit().getImage("src/Images/Sell Smart2 copy.jpg"); frame.setIconImage(img);

能正常工作时,通过Netbeans的 运行项目但是,当我使用命令,通过命令行运行该项目的罐子“Java的罐子project.jar”则不会显示图片。

为什么会出现这个问题?任何解决方案

谢谢, 为引荐添加图像。

enter image description here

+0

我会使用绝对路径,即“/ src目录/图片/卖出SMART2 copy.jpg” – MeBigFatGuy 2011-05-06 17:48:44

+0

@MeBigFatGuy ::那是什么我用 – 2011-05-06 18:13:31

回答

1

只需从您的路径中删除src。 此外,在装载震动的图像,你应该使用的getClass()。getResource()方法

+0

Hi @maneesh,我删除了src文件夹名称,并尝试用“”/ Images/Sell Smart2 copy.jpg“但它没有工作,现在尝试按照你的建议使用getClass()。getResource()。结果 – 2011-05-06 18:41:02

1
  1. 你检查src文件夹包含在罐子当你创建一个罐子? 使用jar -xf或类似选项查看jar内容或使用winrar查看jar内容。
+0

:嗨,我已经用winrar打开罐子,并没有发现 “SRC “它下面的文件夹。它包含直接在jar中的Images文件夹。你可以在添加jar或任何其他选项的src。 – 2011-05-06 18:15:45

1

罐中,你可以使用

getClass().getClassLoader.getResourceAsStream();

当你得到的流,你可以做任何你想要的。

但请记住,当你运行你使用resourseStream你在netbeans项目可能会不会工作,但是当你做jar它会工作。

+0

如果我的回答是正确的,请通知我plz。 – Ankit 2011-05-06 18:26:47

+0

您的建议在语法上是不正确的。没有'getClassLoader()','getClass()。getResourceAsStream()'同样适用于IDE和out。只是重复@maneesh的早期(+1)建议。这个答案可能应该被删除。 – trashgod 2011-05-06 18:58:11

+0

HI @Ankit ::我还没有尝试过你给出的,但是我尝试了@maneesh给出的解决方案,它在IDE和命令都行。谢谢你的回复:) – 2011-05-06 19:38:50

相关问题