我无法使用getClassLoader方法加载图像

时间:2017-04-27 07:44:25

标签: java image class inputstream

以下是我尝试使用的代码。

 InputStream in = new BufferedInputStream(Tester.class.getClassLoader().getResourceAsStream("appResources/img/GESS.png"));
 Image image=null;  
 try {
         image = ImageIO.read(in);
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
 System.out.println(image);

'图像'我正在打印它时为空。

4 个答案:

答案 0 :(得分:1)

试试这个:

InputStream in = Tester.class.getResourceAsStream("your/path");
Image image=null;  
try {
    image = ImageIO.read(in);
} catch (IOException e) {
    e.printStackTrace();
}
System.out.println(image);

值或your/pathappResources/img/GESS.png/appResources/img/GESS.png,具体取决于您的maven配置和您为项目设置的目录。

例如,如果您将以下条目添加到pom.xml文件中:

<resources>
    <resource>
        <directory>src/main/appResources</directory>
    </resource>
</resources>

然后,您可以使用较短的路径获取相同的资源,因为您的程序知道在哪里寻找资源:

InputStream in = Tester.class.getResourceAsStream("img/GESS.png");
Image image=null;  
try {
    image = ImageIO.read(in);
} catch (IOException e) {
    e.printStackTrace();
}
System.out.println(image);

更多信息herehere

答案 1 :(得分:0)

你可以使用InputStream instream = Thread.currentThread()。getContextClassLoader()。getResourceAsStream(&#34; appResources / img / GESS.png&#34;);

答案 2 :(得分:0)

你是这样使用的 InputStream instream = Thread.currentThread()。getContextClassLoader()。getResourceAsStream(&#34; appResources / img / GESS.png&#34;);

答案 3 :(得分:0)

以下是我用于图像加载的两种实用方法。

public static Image getImage(final String pathAndFileName) {
    try {
        return Toolkit.getDefaultToolkit().getImage(getURL(pathAndFileName));
    } catch (final Exception e) {
        //logger.error(e);
        return null;
    }
}

public static URL getURL(final String pathAndFileName) {
    return Thread.currentThread().getContextClassLoader().getResource(pathAndFileName);
}