ClassNotFoundException使用MapView抛出

时间:2011-10-06 13:56:15

标签: android android-mapview classnotfoundexception

我正在努力寻找此代码锁定的原因。据我所知,我在清单文件中声明了正确的权限,如下所示。我试过在实际设备(Droid x w。/ 2.3.3)和AVD上运行它无济于事。我已经附加了logcat,这使我进入了classnotfound异常。我已经清理了项目,并验证了maps.jar包含在googleapi的包中,我也将其用作应用程序的目标。 (Google API的2.3.3)。不知道从哪里开始。

Activity Code:

'package com.SmartPark;

import java.util.List;

import android.content.Context;
import android.graphics.drawable.Drawable;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.os.Handler;
import android.widget.LinearLayout;
//import android.widget.TextView;
import android.widget.Toast;

import com.google.android.maps.GeoPoint;
import com.google.android.maps.MapActivity;
import com.google.android.maps.MapView;
import com.google.android.maps.Overlay;
import com.google.android.maps.OverlayItem;



public class SmartParkActivity extends MapActivity {
 //** Called when the activity is first created. */
    LinearLayout linearlayout;
    MapView mapView;
    List<Overlay> mapOverlays;
    Drawable drawable;
    HelloItemizedOverlay itemizedOverlay;
    GeoPoint point = new GeoPoint(42392400,-83134700);
    OverlayItem overlayitem = new OverlayItem(point, "", "");
    private LocationManager lm;
    private LocationListener locationListener;
    public double[] gps=new double[2];
    public boolean setgps;
    final Handler mHandler = new Handler();
    //TextView tvl; //latitude display
   // TextView tvlong;//longitude display
    int lat2;
    int longitude2;
    public float z;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        mapView = (MapView) findViewById(R.id.mapview);
        mapView.setBuiltInZoomControls(true);
        mapOverlays = mapView.getOverlays();
        drawable = this.getResources().getDrawable(R.drawable.greendot1);
        itemizedOverlay = new HelloItemizedOverlay(drawable);
        OverlayItem overlayitem = new OverlayItem(point, "", "");
        itemizedOverlay.addOverlay(overlayitem);
       mapOverlays.add(itemizedOverlay);
       // tvl =  (TextView) this.findViewById(R.id.gpslview);
      // tvlong =  (TextView) this.findViewById(R.id.gpslongview);
    }

    @Override
    protected boolean isRouteDisplayed() {

            return false;
    }

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


        lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);

        locationListener = new MyLocationListener();

        lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 100, 0,
                locationListener);

        mHandler.postDelayed(mUpdateTimeTask, 500);



    }
    @Override
    protected void onStop() {
        super.onStop();

       lm.removeUpdates(locationListener);
        mHandler.removeCallbacks(mUpdateTimeTask);
        }

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

       lm.removeUpdates(locationListener);
        mHandler.removeCallbacks(mUpdateTimeTask);
        }






    //}
 // helper method to schedule the postdelayed mhandler at specified interval
    private boolean foo() { 
        setgps=false;


        mHandler.postDelayed(mUpdateTimeTask, 500);

        return true;
    };


    //Method to acquire set gps variable and display it. update overlay if     possible
    private Runnable mUpdateTimeTask = new Runnable() {
           public void run() {  

               mapOverlays.clear();
               GeoPoint point = setgeopoint(gps[0],gps[1]);
               OverlayItem overlayitem = new OverlayItem(point, "", "");
               mapOverlays.add(itemizedOverlay);
               itemizedOverlay.addOverlay(overlayitem);

              // tvl.setText("Latitude:"+gps[0]);
               //  tvlong.setText("Longitude"+gps[1]);
                 // z=(float)android.location.Location.getSpeed();
                 setgps=foo(); //reschedules the task

    }; 
    };

    //math functions

   //convert gps double to an int and set to GeoPoint
    public GeoPoint setgeopoint (double dl, double dlong) {
        int intl = (int) (dl*1000000);
        int intlong = (int) (dlong*1000000);

        GeoPoint point= new GeoPoint ( intl, intlong);
        return point;
    }




    public class MyLocationListener implements LocationListener
    {
        @Override
        public void onLocationChanged(Location loc)
        {
            if (loc != null) {
                Toast.makeText(
                        getBaseContext(),
                        "Location changed : Lat: " + loc.getLatitude()
                                + " Lng: " + loc.getLongitude(),
                        Toast.LENGTH_SHORT).show();
                gps[0]= lat2;
                gps[1]=longitude2;
                gps[0] = loc.getLatitude();
                gps[1] = loc.getLongitude();
                z=loc.getSpeed();

            }
        }
        public void onProviderDisabled(String provider)
        {
            Toast.makeText( getApplicationContext(),"Gps     Disabled",Toast.LENGTH_SHORT ).show();
        }
        public void onProviderEnabled(String provider)
        {
            Toast.makeText( getApplicationContext(),"Gps Enabled",Toast.LENGTH_SHORT).show();
        }
        public void onStatusChanged(String provider, int status, Bundle extras)
        {
            Toast.makeText( getApplicationContext(),"Status changed",Toast.LENGTH_SHORT).show();
        }
    }





}'

清单:

<?xml version="1.0" encoding="utf-8"?>
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
  package="com.SmartPark"
  android:versionCode="1"
  android:versionName="1.0">
<uses-sdk android:minSdkVersion="10" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses- permission> 
    <uses-permission android:name="android.permission.ACCESS_LOCATION"></uses-permission> 
<uses-permission android:name="android.permission.ACCESS_GPS"></uses-permission> 
<uses-permission android:name="android.permission.ACCESS_ASSISTED_GPS"></uses-permission>
<application android:icon="@drawable/icon" android:label="@string/app_name">
        <uses-library android:name="com.google.android.maps" />
    <activity android:name=".MapviewActivity"
              android:label="@string/app_name">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>

    </activity>
  </application>

 </manifest>

logcat的:

10-06 09:19:07.239: ERROR/AndroidRuntime(13602): java.lang.RuntimeException: Unable to     instantiate activity ComponentInfo{com.SmartPark/com.SmartPark.MapviewActivity}:     java.lang.ClassNotFoundException: com.SmartPark.MapviewActivity in loader     dalvik.system.PathClassLoader[/system/framework/com.google.android.maps.jar:/data/app/com.SmartPark-2.apk]
10-06 09:19:07.239: ERROR/AndroidRuntime(13602):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1618)
10-06 09:19:07.239: ERROR/AndroidRuntime(13602):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1716)
10-06 09:19:07.239: ERROR/AndroidRuntime(13602):     at android.app.ActivityThread.access$1500(ActivityThread.java:124)
10-06 09:19:07.239: ERROR/AndroidRuntime(13602):     at     android.app.ActivityThread$H.handleMessage(ActivityThread.java:968)
10-06 09:19:07.239: ERROR/AndroidRuntime(13602):     at android.os.Handler.dispatchMessage(Handler.java:99)
10-06 09:19:07.239: ERROR/AndroidRuntime(13602):     at android.os.Looper.loop(Looper.java:123)
10-06 09:19:07.239: ERROR/AndroidRuntime(13602):     at android.app.ActivityThread.main(ActivityThread.java:3806)
10-06 09:19:07.239: ERROR/AndroidRuntime(13602):     at java.lang.reflect.Method.invokeNative(Native Method)
10-06 09:19:07.239: ERROR/AndroidRuntime(13602):     at java.lang.reflect.Method.invoke(Method.java:507)
10-06 09:19:07.239: ERROR/AndroidRuntime(13602):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
10-06 09:19:07.239: ERROR/AndroidRuntime(13602):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
10-06 09:19:07.239: ERROR/AndroidRuntime(13602):     at dalvik.system.NativeStart.main(Native Method)
10-06 09:19:07.239: ERROR/AndroidRuntime(13602): Caused by: java.lang.ClassNotFoundException: com.SmartPark.MapviewActivity in loader dalvik.system.PathClassLoader[/system/framework/com.google.android.maps.jar:/data/app/com.SmartPark-2.apk]
10-06 09:19:07.239: ERROR/AndroidRuntime(13602):     at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:240)
10-06 09:19:07.239: ERROR/AndroidRuntime(13602):     at java.lang.ClassLoader.loadClass(ClassLoader.java:551)
10-06 09:19:07.239: ERROR/AndroidRuntime(13602):     at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
10-06 09:19:07.239: ERROR/AndroidRuntime(13602):     at android.app.Instrumentation.newActivity(Instrumentation.java:1021)
10-06 09:19:07.239: ERROR/AndroidRuntime(13602):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1610)
10-06 09:19:07.239: ERROR/AndroidRuntime(13602):     ... 11 more

2 个答案:

答案 0 :(得分:2)

在应用程序标记中添加使用库...(您添加活动标记...)

所以你的androidmanifiest低于::

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
  package="com.SmartPark"
  android:versionCode="1"
  android:versionName="1.0">
<uses-sdk android:minSdkVersion="10" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission> 
    <uses-permission android:name="android.permission.ACCESS_LOCATION"></uses-permission> 
    <uses-permission android:name="android.permission.ACCESS_GPS"></uses-permission> 
    <uses-permission android:name="android.permission.ACCESS_ASSISTED_GPS">    </uses-permission>
<application android:icon="@drawable/icon" android:label="@string/app_name">
  <uses-library android:name="com.google.android.maps"></uses-library>
    <activity android:name=".SmartParkActivity"
              android:label="@string/app_name">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
        <uses-library android:name="com.google.android.maps" />
    </activity>

</application>

</manifest>

答案 1 :(得分:1)

你的清单中不应该是MapViewActivity而不是MapviewActivity吗?

相关问题