2012-02-16 57 views
-2

當我嘗試啓動我的應用程序時,我正在收到強制關閉錯誤。它由java.lang.NullPointerException引起。我發佈了代碼和LogCat,希望有人能弄明白。強制關閉Java空例外

//initialize game and surface class 
public class RunfoxrunActivity extends Activity 
{ 
/** Called when the activity is first created. */ 

private PowerManager.WakeLock wl; 
private SurfacePanel game; 

//saving state 
public static SharedPreferences mPrefs; 
public static SharedPreferences.Editor ed; 

@Override 
public void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 

    mPrefs = getSharedPreferences("com.kobaj.runfoxrun_prefs", 0); 
    ed = mPrefs.edit(); 

    PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE); 
    wl = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK, "DoNotDimScreen"); 

    setVolumeControlStream(AudioManager.STREAM_MUSIC); 

    game = new SurfacePanel(this); 
    game.onInitialize(); 

    // last 
    setContentView(game); 
} 

@Override 
protected void onPause() 
{ 
    super.onPause(); 
    wl.release(); 

    game.onScreenPause(ed); 
    ed.commit(); 
} 

@Override 
protected void onResume() 
{ 
    super.onResume(); 
    wl.acquire(); 

    game.onScreenResume(mPrefs); 
} 

@Override 
protected void onDestroy() 
{ 
    super.onDestroy(); 

    game.onScreenQuit(ed); 
    ed.commit(); 
} 

@Override 
public boolean onKeyDown(int i, KeyEvent event) 
{ 
    if (i == KeyEvent.KEYCODE_BACK || i == KeyEvent.KEYCODE_HOME || i == KeyEvent.KEYCODE_SEARCH || i == KeyEvent.KEYCODE_MENU) 
     game.onUserPause(); 

    if (i == KeyEvent.KEYCODE_VOLUME_DOWN || i == KeyEvent.KEYCODE_VOLUME_UP) 
     return false; 

    game.im.eventUpdateDown(i, event); 
    return true; 
} 

@Override 
public boolean onKeyUp(int i, KeyEvent event) 
{ 
    game.im.eventUpdateUp(i, event); 
    return true; 
} 

@Override 
public boolean onTouchEvent(MotionEvent e) 
{ 
    game.im.eventUpdate(e); 
    return true; 
} 
} 

而且logcat的是

02-16 13:39:35.110: I/AudioSystem(20006): getting audio flinger 
    02-16 13:39:35.120: I/AudioSystem(20006): returning new audio session id 
    02-16 13:39:35.120: D/MediaPlayer(20006): reset() in 
    02-16 13:39:35.130: D/MediaPlayer(20006): reset() out 
    02-16 13:39:35.130: I/AudioSystem(20006): getting audio flinger 
    02-16 13:39:35.130: I/AudioSystem(20006): returning new audio session id 
    02-16 13:39:35.240: D/MediaPlayer(20006): start() in 
    02-16 13:39:35.360: D/MediaPlayer(20006): start() out 
    02-16 13:39:35.711: I/dalvikvm(20006): Could not find method javax.xml.stream.XMLInputFactory.newInstance, referenced from method org.simpleframework.xml.stream.StreamProvider.<init> 
    02-16 13:39:35.711: W/dalvikvm(20006): VFY: unable to resolve static method 757: Ljavax/xml/stream/XMLInputFactory;.newInstance()Ljavax/xml/stream/XMLInputFactory; 
    02-16 13:39:35.711: D/dalvikvm(20006): VFY: replacing opcode 0x71 at 0x0003 
    02-16 13:39:35.711: D/dalvikvm(20006): VFY: dead code 0x0006-0009 in Lorg/simpleframework/xml/stream/StreamProvider;.<init>()V 
    02-16 13:39:35.711: W/dalvikvm(20006): VFY: unable to find class referenced in signature (Ljavax/xml/stream/XMLEventReader;) 
    02-16 13:39:35.711: W/dalvikvm(20006): VFY: unable to find class referenced in signature (Ljavax/xml/stream/XMLEventReader;) 
    02-16 13:39:35.711: I/dalvikvm(20006): Could not find method javax.xml.stream.XMLInputFactory.createXMLEventReader, referenced from method org.simpleframework.xml.stream.StreamProvider.provide 
    02-16 13:39:35.711: W/dalvikvm(20006): VFY: unable to resolve virtual method 755: Ljavax/xml/stream/XMLInputFactory;.createXMLEventReader (Ljava/io/InputStream;)Ljavax/xml/stream/XMLEventReader; 
    02-16 13:39:35.711: D/dalvikvm(20006): VFY: replacing opcode 0x6e at 0x0002 
    02-16 13:39:35.711: D/dalvikvm(20006): VFY: dead code 0x0005-000a in Lorg/simpleframework/xml/stream/StreamProvider;.provide (Ljava/io/InputStream;)Lorg/simpleframework/xml/stream/EventReader; 
    02-16 13:39:35.711: I/dalvikvm(20006): Could not find method javax.xml.stream.XMLInputFactory.createXMLEventReader, referenced from method org.simpleframework.xml.stream.StreamProvider.provide 
    02-16 13:39:35.721: W/dalvikvm(20006): VFY: unable to resolve virtual method 756: Ljavax/xml/stream/XMLInputFactory;.createXMLEventReader (Ljava/io/Reader;)Ljavax/xml/stream/XMLEventReader; 
    02-16 13:39:35.721: D/dalvikvm(20006): VFY: replacing opcode 0x6e at 0x0002 
    02-16 13:39:35.721: D/dalvikvm(20006): VFY: dead code 0x0005-000a in Lorg/simpleframework/xml/stream/StreamProvider;.provide (Ljava/io/Reader;)Lorg/simpleframework/xml/stream/EventReader; 
    02-16 13:39:35.991: D/dalvikvm(20006): GC_CONCURRENT freed 371K, 48% free 2979K/5639K, external 0K/0K, paused 36ms+44ms 
    02-16 13:39:36.081: E/JAKOBERR(20006): org.simpleframework.xml.core.ValueRequiredException: Unable to satisfy @org.simpleframework.xml.Attribute(empty=, name=, required=true) on field 'xstartpos' private int com.kobaj.runfoxrun.Animation.xstartpos for class com.kobaj.runfoxrun.Animation at line 9 
    02-16 13:39:36.261: D/dalvikvm(20006): GC_CONCURRENT freed 548K, 49% free 2985K/5831K, external 0K/0K, paused 90ms+2ms 
    02-16 13:39:36.311: E/JAKOBERR(20006): org.simpleframework.xml.core.ValueRequiredException: Unable to satisfy @org.simpleframework.xml.Attribute(empty=, name=, required=true) on field 'xstartpos' private int com.kobaj.runfoxrun.Animation.xstartpos for class com.kobaj.runfoxrun.Animation at line 9 
    02-16 13:39:36.331: D/dalvikvm(20006): GC_EXPLICIT freed 337K, 50% free 2939K/5831K, external 0K/0K, paused 28ms 
    02-16 13:39:38.173: E/JAKOBERR(20006): org.simpleframework.xml.core.ValueRequiredException: Unable to satisfy @org.simpleframework.xml.Attribute(empty=, name=, required=true) on field 'xstartpos' private int com.kobaj.runfoxrun.Animation.xstartpos for class com.kobaj.runfoxrun.Animation at line 9 
    02-16 13:39:38.183: D/dalvikvm(20006): GC_CONCURRENT freed 421K, 49% free 3027K/5831K, external 0K/0K, paused 4ms+5ms 
    02-16 13:39:38.263: E/JAKOBERR(20006): org.simpleframework.xml.core.ValueRequiredException: Unable to satisfy @org.simpleframework.xml.Attribute(empty=, name=, required=true) on field 'xstartpos' private int com.kobaj.runfoxrun.Animation.xstartpos for class com.kobaj.runfoxrun.Animation at line 9 
    02-16 13:39:38.323: D/dalvikvm(20006): GC_CONCURRENT freed 616K, 50% free 2980K/5895K, external 0K/0K, paused 3ms+3ms 
    02-16 13:39:38.393: E/JAKOBERR(20006): org.simpleframework.xml.core.ValueRequiredException: Unable to satisfy @org.simpleframework.xml.Attribute(empty=, name=, required=true) on field 'xstartpos' private int com.kobaj.runfoxrun.Animation.xstartpos for class com.kobaj.runfoxrun.Animation at line 9 
    02-16 13:39:38.463: D/dalvikvm(20006): GC_CONCURRENT freed 494K, 50% free 2997K/5895K, external 0K/0K, paused 2ms+2ms 
    02-16 13:39:38.513: E/JAKOBERR(20006): org.simpleframework.xml.core.ValueRequiredException: Unable to satisfy @org.simpleframework.xml.Attribute(empty=, name=, required=true) on field 'xstartpos' private int com.kobaj.runfoxrun.Animation.xstartpos for class com.kobaj.runfoxrun.Animation at line 12 
    02-16 13:39:38.594: D/dalvikvm(20006): GC_CONCURRENT freed 513K, 50% free 2995K/5895K, external 0K/0K, paused 4ms+3ms 
    02-16 13:39:38.644: E/JAKOBERR(20006): org.simpleframework.xml.core.ValueRequiredException: Unable to satisfy @org.simpleframework.xml.Attribute(empty=, name=, required=true) on field 'xstartpos' private int com.kobaj.runfoxrun.Animation.xstartpos for class com.kobaj.runfoxrun.Animation at line 12 
    02-16 13:39:38.734: D/dalvikvm(20006): GC_CONCURRENT freed 500K, 49% free 3007K/5895K, external 0K/0K, paused 2ms+2ms 
    02-16 13:39:38.774: E/JAKOBERR(20006): org.simpleframework.xml.core.ValueRequiredException: Unable to satisfy @org.simpleframework.xml.Attribute(empty=, name=, required=true) on field 'xstartpos' private int com.kobaj.runfoxrun.Animation.xstartpos for class com.kobaj.runfoxrun.Animation at line 9 
    02-16 13:39:38.894: D/dalvikvm(20006): GC_CONCURRENT freed 508K, 49% free 3009K/5895K, external 0K/0K, paused 2ms+2ms 
    02-16 13:39:38.924: E/JAKOBERR(20006): org.simpleframework.xml.core.ValueRequiredException: Unable to satisfy @org.simpleframework.xml.Attribute(empty=, name=, required=true) on field 'xstartpos' private int com.kobaj.runfoxrun.Animation.xstartpos for class com.kobaj.runfoxrun.Animation at line 12 
    02-16 13:39:38.944: D/dalvikvm(20006): GC_EXPLICIT freed 240K, 51% free 2944K/5895K, external 0K/0K, paused 27ms 
    02-16 13:39:38.964: D/AndroidRuntime(20006): Shutting down VM 
    02-16 13:39:38.964: W/dalvikvm(20006): threadid=1: thread exiting with uncaught exception (group=0x4001d5a0) 
    02-16 13:39:38.994: E/AndroidRuntime(20006): FATAL EXCEPTION: main 
    02-16 13:39:38.994: E/AndroidRuntime(20006): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.kobaj.runfoxrun/com.kobaj.runfoxrun.RunfoxrunActivity}: java.lang.NullPointerException 
    02-16 13:39:38.994: E/AndroidRuntime(20006): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1872) 
    02-16 13:39:38.994: E/AndroidRuntime(20006): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1893) 
    02-16 13:39:38.994: E/AndroidRuntime(20006): at android.app.ActivityThread.access$1500(ActivityThread.java:135) 
    02-16 13:39:38.994: E/AndroidRuntime(20006): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1054) 
    02-16 13:39:38.994: E/AndroidRuntime(20006): at android.os.Handler.dispatchMessage(Handler.java:99) 
    02-16 13:39:38.994: E/AndroidRuntime(20006): at android.os.Looper.loop(Looper.java:150) 
    02-16 13:39:38.994: E/AndroidRuntime(20006): at android.app.ActivityThread.main(ActivityThread.java:4385) 
    02-16 13:39:38.994: E/AndroidRuntime(20006): at java.lang.reflect.Method.invokeNative(Native Method) 
    02-16 13:39:38.994: E/AndroidRuntime(20006): at java.lang.reflect.Method.invoke(Method.java:507) 
    02-16 13:39:38.994: E/AndroidRuntime(20006): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:849) 
    02-16 13:39:38.994: E/AndroidRuntime(20006): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:607) 
    02-16 13:39:38.994: E/AndroidRuntime(20006): at dalvik.system.NativeStart.main(Native Method) 
    02-16 13:39:38.994: E/AndroidRuntime(20006): Caused by: java.lang.NullPointerException 
    02-16 13:39:38.994: E/AndroidRuntime(20006): at com.kobaj.runfoxrun.SurfacePanel.onInitialize(SurfacePanel.java:124) 
    02-16 13:39:38.994: E/AndroidRuntime(20006): at com.kobaj.runfoxrun.RunfoxrunActivity.onCreate(RunfoxrunActivity.java:52) 
    02-16 13:39:38.994: E/AndroidRuntime(20006): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1072) 
    02-16 13:39:38.994: E/AndroidRuntime(20006): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1836) 
    02-16 13:39:38.994: E/AndroidRuntime(20006): ... 11 more 
    02-16 13:39:40.976: D/Process(20006): killProcess, pid=20006 
    02-16 13:39:40.986: D/Process(20006): dalvik.system.VMStack.getThreadStackTrace(Native Method) 
    02-16 13:39:40.986: D/Process(20006): java.lang.Thread.getStackTrace(Thread.java:745) 
    02-16 13:39:40.986: D/Process(20006): android.os.Process.killProcess(Process.java:797) 
    02-16 13:39:40.986: D/Process(20006): com.android.internal.os.RuntimeInit$UncaughtHandler.uncaughtException(RuntimeInit.java:108) 
    02-16 13:39:40.986: D/Process(20006): java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:854) 
    02-16 13:39:40.986: D/Process(20006): java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:851) 
    02-16 13:39:40.986: D/Process(20006): dalvik.system.NativeStart.main(Native Method) 
    02-16 13:39:40.986: I/Process(20006): Sending signal. PID: 20006 SIG: 9 
+0

我們需要SurfacePanel的代碼,並且請標記第124行。 – WarrenFaith 2012-02-16 13:45:14

+1

如果仔細閱讀錯誤堆棧跟蹤,您會看到錯誤拋出在'SurfacePanel'類的'onInitialize'方法中。我建議你開始在那裏調查。 – 2012-02-16 13:47:30

+0

你從哪裏獲得XMLHandler類?看起來'XMLHandler.readSerialFile(..)'返回'null'? – 2012-02-16 14:16:01

回答

0

你NPE發生在SurfacePanel,管線124去看看那裏。

com.kobaj.runfoxrun.SurfacePanel.onInitialize(SurfacePanel.java:124) 
+2

這真的是一個答案? – WarrenFaith 2012-02-16 13:47:18

+0

不是真的,應該是一個評論。當OP向我們展示SurfacePanel並說明哪一行是124時,真正的答案是可能的。 – Malcolm 2012-02-16 13:48:51

+0

顯然問題在於OP無法讀取logcat。指出錯誤的位置(並顯示logcat行以顯示如何找到它下一次)應該足以找到並解決NPE。 – 2012-02-16 13:50:42

1

貌似有分析

loadingStar = XMLHandler.readSerialFile(getResources(), R.raw.star, Sprite.class); 

從而loadingStar爲空的問題。從日誌中的警告我猜測XML解析器有問題

+0

雖然我的原始文件夾中有star.xml,但是問題是什麼? – Matt 2012-02-16 14:22:11

+0

這是XMLHandler http://pastebin.com/DN5N3Uc2 – Matt 2012-02-16 14:30:21

+0

很難說。嘗試在readSerialFile內部設置斷點並查看導致問題的原因 – Asahi 2012-02-16 17:25:38