我想在我的应用程序中使用一些图像。但是,我不想对图像路径进行硬编码,因为无论我在哪里存储应用程序都应该有效。
我尝试使用getClass().getResource
和getClass().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}}。
答案 0 :(得分:1)
//something like that
getClass().getResource("../../../public_html/resources/images/img.gif")
我的意思是基于项目目标文件夹或bin文件夹的文件路径。