이게 제 소스인데 오류가 나는데 어디서나는지는 알겠는데 왜 null오류가 나는지 모르겠어요ㅠㅠ

package com.inhatc.map;

import java.io.*;
import java.util.*;
import com.google.android.maps.*;
import com.inhatc.book.*;
import com.inhatc.bookandlibrary.*;
import android.content.*;
import android.graphics.drawable.*;
import android.location.*;
import android.os.Bundle;
import android.util.*;
import android.view.*;
import android.view.ViewGroup.LayoutParams;
import android.widget.*;

public class Map extends MapActivity {
 private MapView objMapView;
 private double country;
 private double area;
 private GeoPoint objGP;
 private List<Address> addr;
 private ImageView marker;
 private String lib_name;
 private String data;
 private Book book;
 @Override
 public void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     setContentView(R.layout.mapview);
    
     objMapView = (MapView)findViewById(R.id.mapView);
     objMapView.setStreetView(true); //지도 View
     objMapView.setBuiltInZoomControls(true); //Zoom in/out 설정
     marker = new ImageView(this); //marker생성
     marker.setImageResource(R.drawable.marker); //marker이미지 id값 저장
     book = new Book();
     data = book.libname.get(0).address.toString(); //여기서 nullPointerException오류가 나네요 왜그렇죠??ㅠㅠ

  
     try {
      Geocoder geo = new Geocoder(this, Locale.KOREAN ); //한국으로 지역설정
      addr = geo.getFromLocationName(data, 5); //찾을 위치
      if (addr.size() > 0) {
       country = addr.get(0).getLatitude()*1E6; //위도
       area = addr.get(0).getLongitude()*1E6; //경도
      objGP = new GeoPoint((int)country, (int)area); //표시할 위치
       MapController objMC = objMapView.getController();
       objMC.animateTo(objGP);
       objMC.setCenter(objGP);
       objMC.setZoom(16);
       MapView.LayoutParams lp = new MapView.LayoutParams(LayoutParams.WRAP_CONTENT,
                             LayoutParams.WRAP_CONTENT, objGP, MapView.LayoutParams.CENTER);
       objMapView.addView(marker, lp);
      } else {
       Toast toast=Toast.makeText(this, "찾을 수 없습니다.", Toast.LENGTH_SHORT);
       toast.show();
       }
     } catch (IOException e) {
      Toast toast=Toast.makeText(this, "Failed to bringing location", Toast.LENGTH_SHORT);
      toast.show();
     }
    } 
 
 @Override
 protected boolean isRouteDisplayed() {
  return false; 
 }

 @Override
 public boolean onCreateOptionsMenu(Menu menu) { //메뉴 생성
  super.onCreateOptionsMenu(menu);
  menu.add(0,1,0, "지도모드"); //streetview
  menu.add(0,2,0, "위성모드"); //statellite
  return true;
 }
 
 @Override
 public boolean onOptionsItemSelected(MenuItem item) { //메뉴선택 속성
  switch(item.getItemId()){
  case 1: //지도
   objMapView.setStreetView(true);
   objMapView.setSatellite(false);
   return true;
  case 2: //위성
   objMapView.setStreetView(false);
   objMapView.setSatellite(true);
   return true;
  }
  return false;
 }
}

 

이건 Logcat오류 입니다.

06-27 06:09:49.046: E/AndroidRuntime(9917): FATAL EXCEPTION: main
06-27 06:09:49.046: E/AndroidRuntime(9917): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.inhatc.bookandlibrary/com.inhatc.map.Map}: java.lang.NullPointerException
06-27 06:09:49.046: E/AndroidRuntime(9917):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1651)
06-27 06:09:49.046: E/AndroidRuntime(9917):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1667)
06-27 06:09:49.046: E/AndroidRuntime(9917):  at android.app.ActivityThread.access$1500(ActivityThread.java:117)
06-27 06:09:49.046: E/AndroidRuntime(9917):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:935)
06-27 06:09:49.046: E/AndroidRuntime(9917):  at android.os.Handler.dispatchMessage(Handler.java:99)
06-27 06:09:49.046: E/AndroidRuntime(9917):  at android.os.Looper.loop(Looper.java:130)
06-27 06:09:49.046: E/AndroidRuntime(9917):  at android.app.ActivityThread.main(ActivityThread.java:3687)
06-27 06:09:49.046: E/AndroidRuntime(9917):  at java.lang.reflect.Method.invokeNative(Native Method)
06-27 06:09:49.046: E/AndroidRuntime(9917):  at java.lang.reflect.Method.invoke(Method.java:507)
06-27 06:09:49.046: E/AndroidRuntime(9917):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:847)
06-27 06:09:49.046: E/AndroidRuntime(9917):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:605)
06-27 06:09:49.046: E/AndroidRuntime(9917):  at dalvik.system.NativeStart.main(Native Method)
06-27 06:09:49.046: E/AndroidRuntime(9917): Caused by: java.lang.NullPointerException
06-27 06:09:49.046: E/AndroidRuntime(9917):  at com.inhatc.map.Map.onCreate(Map.java:39)
06-27 06:09:49.046: E/AndroidRuntime(9917):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1050)
06-27 06:09:49.046: E/AndroidRuntime(9917):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1615)
06-27 06:09:49.046: E/AndroidRuntime(9917):  ... 11 more