Java Path ImageIcon URL .JAR

我可能已经尝试过了,没有人工作过……

该文件是:

/Users/Toto/Desktop/Titi/IUT/Java/TP2/project/src/fichierPointJava/img1.png 

fichierPointJava是包的名称。

当我位于包含build.xml的项目中时,我启动了ant

以下是我测试的代码:

 URL urlImage1=this.getClass().getClassLoader.getResource("/src/fichierPointJava/img1.png"); URL urlImage1=this.getClass().getClassLoader.getResource("/fichierPointJava/img1.png"); URL urlImage1=this.getClass().getClassLoader.getResource("fichierPointJava/img1.png"); URL urlImage1=this.getClass().getClassLoader.getResource("/img1.png"); URL urlImage1=this.getClass().getClassLoader.getResource("img1.png"); System.out.println("Value = "+ urlImage1); 

无论有没有this ,我有一个遗嘱,有或没有getClassLoader()

希望有人能帮助我。

谢谢

如果您有以下包布局

 +---src | img0.png \---fichierPointJava | img1.png |  

然后以下应该工作

 // using the classloader in instance context getClass().getClassLoader().getResource("img0.png"); getClass().getClassLoader().getResource("fichierPointJava/img1.png"); // using the classloader in class/static context .class.getClassLoader().getResource("img0.png"); .class.getClassLoader().getResource("fichierPointJava/img1.png"); // using the class in instance context getClass().getResource("../img0.png"); getClass().getResource("/img0.png"); getClass().getResource("img1.png"); getClass().getResource("/fichierPointJava/img1.png"); // using the class in static/class context .class.getResource("../img0.png"); .class.getResource("/img0.png"); .class.getResource("img1.png"); .class.getResource("/fichierPointJava/img1.png"); 

使用ClassLoader您需要传递资源的完整限定名称,即包括包名称。

使用Class ,路径(如果不是以/开头)是相对于尝试加载资源的类所在的包,否则它是资源的绝对名称。

您可以在javadocs中阅读有关ClassLoader#getResource和Class#getResource的更多信息。

确保您运行的ant目标创建jar包含*.png资源。 您可以使用您选择的zip工具打开jar来validation这一点。 不应包含目录src