getClass()。getResource和getClass()。getClassLoader()。getResource返回Null

时间:2014-01-21 06:06:45

标签: java classloader

我想在我的应用程序中使用一些图像。但是,我不想对图像路径进行硬编码,因为无论我在哪里存储应用程序都应该有效。

我尝试使用getClass().getResourcegetClass().getClassLoader().getResource,但在这两种情况下我都会NULL

这是图像的实际路径:

C:\JDeveloper\mywork\MyApplication\ViewController\public_html\resources\images\img.gif

以下是我正在使用的课程的实际路径:

C:\JDeveloper\mywork\MyApplication\ViewController\src\view\MyClassBean

因此同一项目中的类和图像ViewController

这是来自MyClassBean Class:

的输出语句
        System.out.println("1. "+  getClass());
        System.out.println("2. "+  getClass().getClassLoader());
        System.out.println("----------------------------------------------------------------------------------------------------------------------------");
        System.out.println("1. "+  getClass().getClassLoader().getResource("img.gif") );
        System.out.println("2. "+  getClass().getClassLoader().getResource("/img.gif") );
        System.out.println("3. "+  getClass().getClassLoader().getResource("images/img.gif") );
        System.out.println("4. "+  getClass().getClassLoader().getResource("/images/img.gif") );
        System.out.println("5. "+  getClass().getClassLoader().getResource("resources/images/img.gif") );
        System.out.println("6. "+  getClass().getClassLoader().getResource("/resources/images/img.gif") );
        System.out.println("7. "+  getClass().getClassLoader().getResource("public_html/resources/images/img.gif") );
        System.out.println("8. "+  getClass().getClassLoader().getResource("/public_html/resources/images/img.gif") );
        System.out.println("9. "+  getClass().getClassLoader().getResource("ViewController/public_html/resources/images/img.gif") );
        System.out.println("10. "+ getClass().getClassLoader().getResource("/ViewController/public_html/resources/images/img.gif") );
        System.out.println("11. "+ getClass().getClassLoader().getResource("myApplication/ViewController/public_html/resources/images/img.gif") );
        System.out.println("12. "+ getClass().getClassLoader().getResource("/myApplication/ViewController/public_html/resources/images/img.gif") );
        System.out.println("----------------------------------------------------------------------------------------------------------------------------");
        System.out.println("1. "+  getClass().getResource("img.gif") );
        System.out.println("2. "+  getClass().getResource("/img.gif") );
        System.out.println("3. "+  getClass().getResource("images/img.gif") );
        System.out.println("4. "+  getClass().getResource("/images/img.gif") );
        System.out.println("5. "+  getClass().getResource("resources/images/img.gif") );
        System.out.println("6. "+  getClass().getResource("/resources/images/img.gif") );
        System.out.println("7. "+  getClass().getResource("public_html/resources/images/img.gif") );
        System.out.println("8. "+  getClass().getResource("/public_html/resources/images/img.gif") );
        System.out.println("9. "+  getClass().getResource("ViewController/public_html/resources/images/img.gif") );
        System.out.println("10. "+ getClass().getResource("/ViewController/public_html/resources/images/img.gif") );
        System.out.println("11. "+ getClass().getResource("myApplication/ViewController/public_html/resources/images/img.gif") );
        System.out.println("12. "+ getClass().getResource("/myApplication/ViewController/public_html/resources/images/img.gif") ); 

这是输出结果:

1. class view.MyClassBean
2. weblogic.utils.classloaders.ChangeAwareClassLoader@16a1d36 finder: weblogic.utils.classloaders.CodeGenClassFinder@a94081 annotation: MyApplication@MyApplication-ViewController-context-root
----------------------------------------------------------------------------------------------------------------------------
1.  null
2.  null
3.  null
4.  null
5.  null
6.  null
7.  null
8.  null
9.  null
10. null
11. null
12. null
----------------------------------------------------------------------------------------------------------------------------
1.  null
2.  null
3.  null
4.  null
5.  null
6.  null
7.  null
8.  null
9.  null
10. null
11. null
12. null

那么,如何在java代码中获取存储在运行类所在的同一项目中的任何图像。

我正在使用JDeveloper 11g Release 2技术{/ 1}}。

1 个答案:

答案 0 :(得分:1)

//something like that     
getClass().getResource("../../../public_html/resources/images/img.gif")

我的意思是基于项目目标文件夹或bin文件夹的文件路径。