3

我可能已经尝试过了,没有任何工作..

该文件是:

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

fichierPointJava是包的名称。

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

以下是我测试的代码:

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()

希望有人能帮助我。

谢谢

4

1 回答 1

3

如果您有以下包布局

+---src
    |   img0.png
    \---fichierPointJava
        |       img1.png
        |       <YourClass.java>

那么以下应该工作

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

// using the classloader in class/static context
<YourClass>.class.getClassLoader().getResource("img0.png");
<YourClass>.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
<YourClass>.class.getResource("../img0.png");
<YourClass>.class.getResource("/img0.png");
<YourClass>.class.getResource("img1.png");
<YourClass>.class.getResource("/fichierPointJava/img1.png");

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

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

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

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

于 2013-06-04T18:40:46.823 回答