2011-05-14 29 views
1

我有一个奇怪的问题。我在一个项目中有一个类,当我运行它时,它开始正常。我把这个类放在我的项目中(我有一些包和一些类),我把它放在AndroidManifest中,但是当我运行时,我得到了NoClassDefFound。我意识到我的项目中有任何新课程,我都会遇到这个错误。谁能帮我?我不知道这个error..Help,请任何解决方案..我在我的项目中创建的任何新课程,我得到NoClassDefFound

这是我的课:

package com.ShoppingList; 

import android.graphics.drawable.Drawable; 
import android.graphics.Canvas; 
import android.os.Bundle; 
import android.view.KeyEvent; 
import android.widget.Toast; 
import com.google.android.maps.GeoPoint; 
import com.google.android.maps.ItemizedOverlay; 
import com.google.android.maps.MapActivity; 
import com.google.android.maps.MapView; 
import com.google.android.maps.MyLocationOverlay; 
import com.google.android.maps.OverlayItem; 
import java.util.ArrayList; 
import java.util.List; 

public class ShopsOnMap extends MapActivity { 
    private MapView map=null; 
    private MyLocationOverlay me=null; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     map=(MapView)findViewById(R.id.map); 

     map.getController().setCenter(getPoint 
       (40.76793169992044,-173.98180484771729)); 
     map.getController().setZoom(17); 
     map.setBuiltInZoomControls(true); 

     Drawable marker=getResources().getDrawable(R.drawable.pushpin); 

     marker.setBounds(0, 0, marker.getIntrinsicWidth(), 
         marker.getIntrinsicHeight()); 

     map.getOverlays().add(new SitesOverlay(marker)); 

     me=new MyLocationOverlay(this, map); 
     map.getOverlays().add(me); 
    } 

    @Override 
    public void onResume() { 
     super.onResume(); 

     me.enableCompass(); 
    }  

    @Override 
    public void onPause() { 
     super.onPause(); 

     me.disableCompass(); 
    }  

    @Override 
    protected boolean isRouteDisplayed() { 
     return(false); 
    } 

    @Override 
    public boolean onKeyDown(int keyCode, KeyEvent event) { 
     if (keyCode == KeyEvent.KEYCODE_S) { 
      map.setSatellite(!map.isSatellite()); 
      return(true); 
     } 
     else if (keyCode == KeyEvent.KEYCODE_Z) { 
      map.displayZoomControls(true); 
      return(true); 
     } 

     return(super.onKeyDown(keyCode, event)); 
    } 

    private GeoPoint getPoint(double lat, double lon) { 
     return(new GeoPoint((int)(lat*1000000.0), 
          (int)(lon*1000000.0))); 
    } 

    private class SitesOverlay extends ItemizedOverlay<OverlayItem> { 
     private List<OverlayItem> items=new ArrayList<OverlayItem>(); 
     private Drawable marker=null; 

     public SitesOverlay(Drawable marker) { 
      super(marker); 
      this.marker=marker; 

      items.add(new OverlayItem(getPoint 
        (40.748963847316034,-173.96807193756104), 
           "UN", "United Nations")); 
      items.add(new OverlayItem(getPoint 
        (40.76866299974387,-173.98268461227417), 
           "Lincoln Center", 
           "Home of Jazz at Lincoln Center")); 
      items.add(new OverlayItem(getPoint 
        (40.765136435316755,-173.97989511489868), 
           "Carnegie Hall", 
         "Where you go with practice, practice, practice")); 
      items.add(new OverlayItem(getPoint 
        (40.70686417491799,-174.01572942733765), 
           "The Downtown Club", 
         "Original home of the Heisman Trophy")); 

      populate(); 
     } 

     @Override 
     protected OverlayItem createItem(int i) { 
      return(items.get(i)); 
     } 

     @Override 
     public void draw(Canvas canvas, MapView mapView, boolean shadow) { 
      super.draw(canvas, mapView, shadow);    
      boundCenterBottom(marker); 
     } 

     @Override 
     protected boolean onTap(int i) { 
      Toast.makeText(ShopsOnMap.this, 
           items.get(i).getSnippet(), 
           Toast.LENGTH_SHORT).show(); 

      return(true); 
     } 

     @Override 
     public int size() { 
      return(items.size()); 
     } 
    } 
} 

而在logcat中我有:

05-14 13:10:24.755: ERROR/AndroidRuntime(368): java.lang.NoClassDefFoundError: com.ShoppingList.ShopsOnMap 
05-14 13:10:24.755: ERROR/AndroidRuntime(368):  at com.ShoppingList.Lists.onCreate(Lists.java:122) 
05-14 13:10:24.755: ERROR/AndroidRuntime(368):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
05-14 13:10:24.755: ERROR/AndroidRuntime(368):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2459) 
05-14 13:10:24.755: ERROR/AndroidRuntime(368):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2512) 
05-14 13:10:24.755: ERROR/AndroidRuntime(368):  at android.app.ActivityThread.access$2200(ActivityThread.java:119) 
05-14 13:10:24.755: ERROR/AndroidRuntime(368):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1863) 
05-14 13:10:24.755: ERROR/AndroidRuntime(368):  at android.os.Handler.dispatchMessage(Handler.java:99) 
05-14 13:10:24.755: ERROR/AndroidRuntime(368):  at android.os.Looper.loop(Looper.java:123) 
05-14 13:10:24.755: ERROR/AndroidRuntime(368):  at android.app.ActivityThread.main(ActivityThread.java:4363) 
05-14 13:10:24.755: ERROR/AndroidRuntime(368):  at java.lang.reflect.Method.invokeNative(Native Method) 
05-14 13:10:24.755: ERROR/AndroidRuntime(368):  at java.lang.reflect.Method.invoke(Method.java:521) 
05-14 13:10:24.755: ERROR/AndroidRuntime(368):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860) 
05-14 13:10:24.755: ERROR/AndroidRuntime(368):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618) 
05-14 13:10:24.755: ERROR/AndroidRuntime(368):  at dalvik.system.NativeStart.main(Native Method) 
05-14 13:10:24.783: INFO/Process(52): Sending signal. PID: 368 SIG: 3 
05-14 13:10:24.796: INFO/dalvikvm(368): threadid=7: reacting to signal 3 
05-14 13:10:24.854: INFO/dalvikvm(368): Wrote stack trace to '/data/anr/traces.txt' 
05-14 13:10:26.295: INFO/Process(368): Sending signal. PID: 368 SIG: 9 
05-14 13:10:26.393: INFO/ActivityManager(52): Process com.ShoppingList (pid 368) has died. 
05-14 13:10:26.444: INFO/WindowManager(52): WIN DEATH: Window{44e46860 com.ShoppingList/com.ShoppingList.Start paused=false} 
05-14 13:10:26.444: INFO/WindowManager(52): WIN DEATH: Window{44e41618 AtchDlg:com.ShoppingList/com.ShoppingList.Start paused=false} 
05-14 13:10:26.603: INFO/ActivityManager(52): Start proc com.ShoppingList for activity com.ShoppingList/.Start: pid=485 uid=10043 gids={3003} 

AndroidManifest:

<uses-library android:name="com.google.android.maps" />  

<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION"/> 
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 

<application android:icon="@drawable/icon" android:label="@string/app_name"> 
    <activity android:name=".Start" 
       android:label="@string/app_name"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
<activity android:name=".Lists"></activity> 
<activity android:name=".NewList"></activity> 
<activity android:name=".AddProduct"></activity> 
<activity android:name=".Categoris"></activity> 
<activity android:name=".EditProduct"></activity> 

<activity android:name=".SimpleCalendar"></activity> 
<activity android:name="com.ShoppingList.ProductsPredefine.NewProduct"></activity> 
<activity android:name="com.ShoppingList.ProductsPredefine.Details"></activity> 
<activity android:name="com.ShoppingList.Shops.Shops"></activity> 
<activity android:name="com.ShoppingList.MapShow"> 
<activity android:name=".ShopsOnMap"></activity> 
<intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 

</activity> 
<activity android:name="com.ShoppingList.Shops.SelectShop"></activity> 

</application> 

Lists.java:

package com.ShoppingList; 

import com.ShoppingList.databases.ListDbAdapter; 
import com.ShoppingList.databases.ShopDbAdapter; 
import com.google.android.maps.GeoPoint; 

import android.app.Activity; 
import android.app.Notification; 
import android.app.NotificationManager; 
import android.app.PendingIntent; 
import android.content.Context; 
import android.content.Intent; 
import android.database.Cursor; 
import android.location.Location; 
import android.location.LocationListener; 
import android.location.LocationManager; 
import android.net.Uri; 
import android.os.Bundle; 
import android.view.ContextMenu; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.view.View; 
import android.view.ContextMenu.ContextMenuInfo; 
import android.widget.AdapterView; 
import android.widget.ListView; 
import android.widget.SimpleCursorAdapter; 
import android.widget.AdapterView.AdapterContextMenuInfo; 
import android.widget.AdapterView.OnItemClickListener; 

public class Lists extends Activity { 

private ListView lists; 

private SimpleCursorAdapter adapter; 
private Cursor cursor, c; 
private ListDbAdapter db; 
private ShopDbAdapter shop; 
float[] results; 
double latitudine; 
double longitudine; 
LocationManager lm; 

private static final int NOTIFICATION_ID = 1; 
private NotificationManager notificationManager; 


private static final int NEW_LIST = Menu.FIRST; 
private static final int DELETE_LIST = Menu.FIRST + 1; 

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.lists); 

    lists = (ListView) findViewById(R.id.list); 

    db = new ListDbAdapter(this); 
    db.open(); 

    shop = new ShopDbAdapter(this); 
    shop.open(); 
    fillData(); 

    registerForContextMenu(lists); 

    lists.setOnItemClickListener(new OnItemClickListener() { 

     public void onItemClick(AdapterView<?> parent, View v, 
       int position, long id) { 
      Intent j = new Intent(Lists.this, AddProduct.class); 
      Cursor c = (Cursor) parent.getAdapter().getItem(position); 

      j.putExtra("titlelist", c.getString(c 
        .getColumnIndex(db.KEY_TITLE))); 
      j.putExtra("idlist", c 
        .getString(c.getColumnIndex(db.KEY_ROWID))); 
      startActivityForResult(j, 0); 
     } 
    }); 

    cursor = db.fetchAll(); 
    startManagingCursor(cursor); 

    c = shop.fetchAll(); 
    startManagingCursor(c); 
    cursor.moveToFirst(); 
    do { 
     System.out.println("#####" + db.getShop(cursor) + "$$$$$$"); 
     c.moveToFirst(); 
     do { 
      if (db.getShop(cursor) == shop.getName(c)) { 
       latitudine = shop.getLatitudine(c); 
       longitudine = shop.getLongitudine(c); 
       System.out.println("%%%" + latitudine + "!!!!!"); 
       System.out.println("%%%" + longitudine + "!!!!!"); 
      } else 
       c.moveToNext(); 
     } while (c.isLast()); 
     cursor.moveToNext(); 
    } while (cursor.isLast()); 

    latitudine = 46.7511187; 
    longitudine = 23.5906539; 
    results = new float[1]; 
    Location.distanceBetween(46.7547825, 23.5861364, latitudine, 
      longitudine, results); 
    System.out.println("%%%" + latitudine + "!!!!!"); 
    System.out.println("Distanta este" + results[0] + "!!!!!!!"); 
    if (results[0] < 800) { 

     notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); 
     CharSequence NotificationTicket = "Notification"; 
     CharSequence NotificationTitle = "Notification"; 
     CharSequence NotificationContent = "Test"; 
     long when = System.currentTimeMillis(); 

     Notification notification = new Notification(R.drawable.icon, 
       NotificationTicket, when); 

     Context context = getApplicationContext(); 

     Intent notificationIntent = new Intent(this,ShopsOnMap.class); 
     PendingIntent contentIntent = PendingIntent.getActivity(this, 0, 
       notificationIntent, 0); 

     notification.setLatestEventInfo(context, NotificationTitle, 
       NotificationContent, contentIntent); 

     notificationManager.notify(NOTIFICATION_ID, notification); 
     notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP| Intent.FLAG_ACTIVITY_SINGLE_TOP); 

    } 

} 

public boolean onCreateOptionsMenu(Menu menu) { 
    menu.add(0, NEW_LIST, 0, "New List");// .setIcon(R.drawable.quit); 
    return true; 
} 

public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) { 
    case NEW_LIST: 
     createlist(); 
     return true; 
    } 
    return false; 

} 

public void createlist() { 
    startActivityForResult(new Intent(Lists.this, NewList.class), 0); 

} 

public void onCreateContextMenu(ContextMenu menu, View v, 
     ContextMenuInfo menuInfo) { 
    menu.add(0, DELETE_LIST, 0, "Delete List"); 
} 

public boolean onContextItemSelected(MenuItem mitem) { 

    switch (mitem.getItemId()) { 

    case DELETE_LIST: 
     AdapterContextMenuInfo info = (AdapterContextMenuInfo) mitem 
       .getMenuInfo(); 
     db.delete(info.id); 
     fillData(); 
     return true; 
    default: 
     return super.onContextItemSelected(mitem); 
    } 
} 

@Override 
protected void onActivityResult(int requestCode, int resultCode, 
     Intent intent) { 
    super.onActivityResult(requestCode, resultCode, intent); 
    fillData(); 
} 

private void fillData() { 
    cursor = db.fetchAll(); 
    startManagingCursor(cursor); 

    adapter = new SimpleCursorAdapter(this, R.layout.listview, cursor, 
      new String[] { ListDbAdapter.KEY_TITLE }, 
      new int[] { R.id.txt1 }); 
    lists.setAdapter(adapter); 
} 

} 

UPDATE:这里是我的问题:

<uses-library android:name="com.google.android.maps" /> 

必须在<application> </application>

+1

安置自己的代码和错误日志的包,请。 – 2011-05-14 13:23:10

+0

请张贴您的清单。 – MByD 2011-05-14 13:32:37

+0

我提到这不是第一次当我得到这个错误。在另一个类中(它像这样扩展了MapActivity)我也得到了这个错误。看起来,我不能在我的项目中看到这些类。我不明白哪里可以解决问题,因为我已经把Manifest的地图权限放进去了,我在xml中输入了密钥...... – Gaby 2011-05-14 13:47:52

回答

0

开始时通过检查你的堆栈跟踪。这听起来像是在抱怨新课程以外的事情。

0

确保您的清单已经宣布在<manifest>标签

<manifest package="com.ShoppingList" . . . > 
+0

是的,声明了这个包:<?xml version =“1.0”encoding =“ utf-8“?> Gaby 2011-05-14 14:26:15

+0

你可以显示你的'Lists.java'吗? – ccheneson 2011-05-14 14:35:23

+0

我应该尝试与我拥有的所有课程一起完成一个新项目吗? – Gaby 2011-05-14 16:24:02

相关问题