title: Java IO can't read input file?
body: <p>I have just started learning java and I've been working on this code for a moving object with keyboard input. I am now trying to add in a background, but it keeps erroring with:</p>
  
  <pre><code>javax.imageio.IIOException: Can't read input file!
      at javax.imageio.ImageIO.read(Unknown Source)
      at game.GameLoop.run(GameLoop.java:24)
      at java.lang.Thread.run(Unknown Source)
  </code></pre>
  
  <p>The code I have in Game.java is:</p>
  
  <pre><code>package game;
  
  import java.applet.*;
  import java.awt.*;
  
  public class Game extends GameLoop{
  
      public void init(){
          setSize(864,480);
          Thread th = new Thread(this);
          th.start();
          offscreen = createImage(864,480);
          d = offscreen.getGraphics();
          addKeyListener(this);
      }
  
      public void paint(Graphics g){
          d.clearRect(0, 0, 864, 480);
          d.drawImage(background, 0, 0, this);
          d.drawRect(x, y, 20, 20);
          g.drawImage(offscreen, 0, 0, this);
      }
  
      public void update(Graphics g){
          paint(g);
      }
  }
  </code></pre>
  
  <p>And here is my GameLoop.java:</p>
  
  <pre><code>package game;
  
  import java.applet.*;
  import java.awt.*;
  import java.awt.event.*;
  import java.awt.image.BufferedImage;
  import java.io.File;
  import java.io.IOException;
  
  import javax.imageio.ImageIO;
  
  public class GameLoop extends Applet implements Runnable, KeyListener{
  
      public int x, y;
      public Image offscreen;
      public Graphics d;
      public boolean up, down, left, right;
      public BufferedImage background;
  
      public void run(){
          x = 100;
          y = 100;
          try {
              background = ImageIO.read(new File("background.png"));
          } catch (IOException e1) {
              e1.printStackTrace();
          }
          while(true){
              x = 100;
              y = 100;
              while(true){
                  if (left == true){
                      x-=4;
                  }
                  if (right == true){
                      x+=4;
                  }
                  if (up == true){
                      y-=4;
                  }
                  if (down == true){
                      y+=4;
                  }
                  if ( x &lt;= 0 ){
                      x = 0;
                  }
                  if ( y &lt;= 0 ){
                      y = 0;
                  }
                  if ( x &gt;= 843 ){
                      x = 843;
                  }
                  if ( y &gt;= 460 ){
                      y = 459;
                  }
                  repaint();
              try{
                  Thread.sleep(20);
              } catch(InterruptedException e){
                  e.printStackTrace();
              }
              }
          }
      }
  
      //@Override
      public void keyPressed(KeyEvent e) {
          if(e.getKeyCode() == 37){
              left = true;
          }
          if(e.getKeyCode() == 38){
              up = true;
          }
          if(e.getKeyCode() == 39){
              right = true;
          }
          if(e.getKeyCode() == 40){
              down = true;
          }
      }
  
      //@Override
      public void keyReleased(KeyEvent e) {
          if(e.getKeyCode() == 37){
              left = false;
          }
          if(e.getKeyCode() == 38){
              up = false;
          }
          if(e.getKeyCode() == 39){
              right = false;
          }
          if(e.getKeyCode() == 40){
              down = false;
          }
      }
  
      //@Override
      public void keyTyped(KeyEvent e) {
      }
  }
  </code></pre>
  
  <p>Sorry about the editing I can't seem to get it all in the ``, and I will also fix the messy code, but do you guys have any ideas what is causing this error, there is a file in the src dir called background.png, it is very basic and made in MS paint, if that helps.</p>
  
  <p>Thanks.</p>