我尝试将图像从本地目录加载到ImageIcon(URL)。这个图像文件从.jar文件访问.jar文件名是swingex.jar。项目结构如
F:/>SwingExample
|
|___src
|
|___build.xml
|
|___lib
|
|___swingsex.jar(generated through build.xml file)
|
|__resource
|
|_____images
|
|___logo1.png
如何阅读logo1.png文件?
我想要这样
file:///f://resources//images//processedimages//
返回null
ClassLoader.getSystemResource("resources/images/processedimages/");
返回null
更新: - 我仍然有问题。因为我在SwingExample上创建了jar文件,并且排除了资源/图像目录。当运行jar文件时,它无法识别资源/图像文件夹。但是我通过eclipse运行SwingExample项目工作正常。代码是< / p>
File directory = new File ("."); Image img = null; String path=""; URL url=null; try { path=directory.getCanonicalPath()+"/resources/images/logo1.png"; img = ImageIO.read(new File(getDefaultImageUploadPath()); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } return new ImageIcon(img);
答案 0 :(得分:3)
URL imgURL =
new File( "F:/SwingExample/resource/images/logo1.png" ).toURI().toURL();
但我建议将资源放入src。
如果资源在src中,您可以轻松地通过类加载器访问它们。
getClassLoader().getResourceAsStream( "resource/images/logo1.png" );
答案 1 :(得分:1)
根据应用程序的执行上下文,您可以使用相对路径
URL imgURL = new File( "resource/images/logo1.png" ).toURI().toURL();
或者
URL imgURL = new File( "../resource/images/logo1.png" ).toURI().toURL();
可能会工作,但Aubin是正确的,将图像嵌入应用程序并通过类加载器上下文访问会更容易
答案 2 :(得分:0)
对于java项目,默认目录始终从src开始。只有在以下方式组织资源时,您的代码才能正常运行.... :)
SwingExample
|
|___src
| |
| |_____resource
| |
| |_____images
| |
| |___logo1.png
|___build.xml
|
|___lib
|
|___swingsex.jar(generated through build.xml file)
这次getClassLoader().getResourceAsStream( "/resource/images/logo1.png" );
不会返回null。