如何在java getResources()中给出相对路径

时间:2014-04-18 04:36:01

标签: java swing embedded-resource getresource

我正在使用eclipse juno for java应用程序,并希望在应用程序上加载图像,为此我正在编写代码

 URL imageURL = LoginWindow.class.getClassLoader().getResource("resources/img/pause.png");

会出现以下错误

  

找不到资源:resources / img / pause.png   线程" main"中的例外情况java.lang.IllegalArgumentException:在java.awt.TrayIcon上创建带有null Image的TrayIcon。(未知来源)

但如果我将图像放在我的java文件所在的文件夹中并删除所有路径并仅提供" pause.png"然后它正常工作。

4 个答案:

答案 0 :(得分:3)

使用这种形式的调用获得的类加载器可能 是用于加载应用程序资源的上下文类加载器。我建议改为:

LoginWindow lw = new LoginWindow();
// exactly as below, including leading /
URL url = lw.getClass().getResource("/resources/img/pause.png");

答案 1 :(得分:1)

从他们那里获取类相对路径可以参考图像

enter image description here

      ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
    String imgUrl =classLoader.getResource(".").getPath()+   
                                       "../resources/img/pause.png";

通过使用imgUrl,您可以执行您想要执行的操作。

答案 2 :(得分:-1)

请提供您项目的结构。 如果您有Maven项目,您的代码应如下所示:

URL imageURL = LoginWindow.class.getClassLoader().getResource("src/main/resources/img/pause.png");

答案 3 :(得分:-1)

如果您在applet中运行

,请尝试此操作
URL url = new URL(getCodeBase(), "resources/img/pause.png");