2014-03-29 3 views
0

여기 여기 내 코드자바 Slick2D의 drawImage가 nullpointer

package game.src; 


import java.util.ArrayList; 

import org.lwjgl.opengl.Drawable; 
import org.newdawn.slick.AppGameContainer; 
import org.newdawn.slick.BasicGame; 
import org.newdawn.slick.Color; 
import org.newdawn.slick.GameContainer; 
import org.newdawn.slick.Graphics; 
import org.newdawn.slick.Image; 
import org.newdawn.slick.SlickException; 


public class Main extends BasicGame{ 

    public static final int WIDTH = 1920; 
    public static final int HEIGHT = 1080; 
    private Image grass = null; //Initializing the image 







    public Main() { 
      super("Wizard game"); 
     } 

     public static void main(String[] arguments) 
     { 
      try 
      { 
       AppGameContainer app = new AppGameContainer(new Main()); 
       app.setDisplayMode(WIDTH, HEIGHT, false); 
       app.setAlwaysRender(true); 
       app.start(); 

      } 
      catch (SlickException e) 
      { 
       e.printStackTrace(); 
      } 
     } 

     @Override 
     public void init(GameContainer container) throws SlickException 
     { 

      Image grass = new Image("res/grass.png"); //Location of picture (see link below) 

     } 

     @Override 
     public void update(GameContainer container, int delta) throws SlickException 
     { 
     } 

     public void render(GameContainer container, Graphics g) throws SlickException{ 
     g.drawImage(grass, 0, 0); //This is the crash location 



     } 
    } 

의 콘솔 오류

Fri Mar 28 22:21:36 CDT 2014 INFO:Slick Build #237 
Fri Mar 28 22:21:36 CDT 2014 INFO:LWJGL Version: 2.9.0 
Fri Mar 28 22:21:36 CDT 2014 INFO:OriginalDisplayMode: 1920 x 1080 x 32 @60Hz 
Fri Mar 28 22:21:36 CDT 2014 INFO:TargetDisplayMode: 1920 x 1080 x 0 @0Hz 
Fri Mar 28 22:21:36 CDT 2014 INFO:Starting display 1920x1080 
Fri Mar 28 22:21:36 CDT 2014 INFO:Use Java PNG Loader = true 
WARNING: Found unknown Windows version: Windows 7 
Attempting to use default windows plug-in. 
Loading: net.java.games.input.DirectAndRawInputEnvironmentPlugin 
Fri Mar 28 22:21:37 CDT 2014 INFO:Found 5 controllers 
Fri Mar 28 22:21:37 CDT 2014 INFO:0 : USB Multimedia Keyboard 
Fri Mar 28 22:21:37 CDT 2014 INFO:1 : USB Multimedia Keyboard 
Fri Mar 28 22:21:37 CDT 2014 INFO:2 : USB Multimedia Keyboard 
Fri Mar 28 22:21:37 CDT 2014 INFO:3 : Turtle Beach PX21 Headset 
Fri Mar 28 22:21:37 CDT 2014 INFO:4 : USB AUDIO 
Fri Mar 28 22:21:37 CDT 2014 ERROR:null 
java.lang.NullPointerException <--- I'm guessing it can't find the picture so it thinks it's null. 
    at org.newdawn.slick.Graphics.drawImage(Graphics.java:1384) 
    at org.newdawn.slick.Graphics.drawImage(Graphics.java:1433) 
    at game.src.Main.render(Main.java:65) 
    at org.newdawn.slick.GameContainer.updateAndRender(GameContainer.java:688) 
    at org.newdawn.slick.AppGameContainer.gameLoop(AppGameContainer.java:411) 
    at org.newdawn.slick.AppGameContainer.start(AppGameContainer.java:321) 
    at game.src.Main.main(Main.java:41) 
Fri Mar 28 22:21:37 CDT 2014 ERROR:Game.render() failure - check the game code. <-- No shit 
org.newdawn.slick.SlickException: Game.render() failure - check the game code. <-- No shit 
    at org.newdawn.slick.GameContainer.updateAndRender(GameContainer.java:691) 
    at org.newdawn.slick.AppGameContainer.gameLoop(AppGameContainer.java:411) 
    at org.newdawn.slick.AppGameContainer.start(AppGameContainer.java:321) 
    at game.src.Main.main(Main.java:41) 

내가 무슨 일이 일어나고 있는지 단서를하지 않아도에게, 그리고 내가 설치 확신 LWJGL 및 정확히 슬릭. 어떤 이유로 경로가 작동하지 않아서 그림이 Null이 될 수도 있습니다. 내 당신의 init 메소드에서

+0

이미지는 어디에 배치됩니까? –

답변

0

http://imgur.com/vLRGIcf을 경로 지정의

이미지, 당신은 grass 변수를 그림자. 메서드에서 새 변수를 만들지 않고 grass 필드를 설정하려면 Image grass = new Image("res/grass.png");grass = new Image("res/grass.png");으로 변경해보십시오.

풀 필드를 null에서 변경하지 않으므로, 시도하고 그릴 때 NullPointerException이 발생합니다.

+0

와우 감사하지만 미래의 참조를 위해 내가 어떻게했을 때 일식이 오류를 던지지 않았습니까? – Achilles

+0

왜해야합니까? 컴파일 오류가 아니며 완벽하게 유효한 코드입니다. 사용하지 않는 변수에 대한 경고를 줄 수도 있지만 기본적으로 비활성화되어있을 수 있습니다. – Sinkingpoint