public void loadStdImage() throws IOException
{
Image image = ImageIO.read(this.getClass().getResource("/Resources/Images/Student/Capture.png")); //Line 350
ImageIcon icon = new ImageIcon(image);
JLabel lblImage = new JLabel(icon);
lblImage.setIcon(icon);
lblImage.setBounds(753, 50, 149, 171);
add(lblImage);
}
我尝试了很多东西......但没有任何结果。连续显示以下运行时错误
Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: input == null!
at javax.imageio.ImageIO.read(Unknown Source)
at View.Student.loadStdImage(Student.java:350)
项目文件夹结构是:
编辑: 找到了解决方案。请参阅下图和上图中资源文件夹图标的更改。我将我的资源文件夹添加到Java Build Path。右键单击您的项目,转到属性,然后选择“Java Build Path”,从那里将您的文件夹添加到java构建路径。 干杯 enter image description here
答案 0 :(得分:3)
现在让我帮你解决这个问题。
我有标准的Eclipse项目:
我的测试类看起来像(最小):
package q34460547;
import java.awt.Image;
import java.io.IOException;
import javax.imageio.ImageIO;
public class LoadTest {
public static void main(String[] args) throws IOException {
new LoadTest().loadStdImage();
}
public void loadStdImage() throws IOException {
Image image = ImageIO.read(this.getClass().getResource("/ScreenShot005.png"));
}
}
现在,当我使用
时ImageIO.read(this.getClass().getResource("/ScreenShot005.png"));
图像是从Eclipse中的res所谓的源文件夹加载的。
当我使用
时ImageIO.read(this.getClass().getResource("ScreenShot005.png"));
从LoadTest.java文件所在的文件夹加载的图像(确切地说,它也被编译到同一个文件夹 - 在Eclipse中它的bin)。
您可以在此处找到更多信息 - What is the difference between Class.getResource() and ClassLoader.getResource()?
修改强>
图片必须位于类路径上(使用Class.getResource
时),这就是为什么它没有从Resources
文件夹加载的原因。有两个选项,使用其他版本的ImageIO.read()
或将您的Resources
文件夹设为源文件夹: