【问题标题】:NoClassDefException while importing project导入项目时出现 NoClassDefException
【发布时间】:2013-03-14 14:24:52
【问题描述】:

我有一个问题,我正在做一个地图应用程序,我需要使用一些浮动菜单。我发现了一个很好的例子,它发布在这个网站上(QuickAction)。但是当我将这个项目包含在我的构建路径中时项目,我得到一个 NoClassDefError。这是我的日志。

LogCat:

03-14 15:19:17.858: W/dalvikvm(1807): VFY: unable to find class referenced in signature (Lnet/londatiga/android/QuickAction;)
03-14 15:19:17.888: E/dalvikvm(1807): Could not find class 'net.londatiga.android.ActionItem', referenced from method com.gps.gpsclient.GPSClientActivity.createFloatingMenu
03-14 15:19:17.888: W/dalvikvm(1807): VFY: unable to resolve new-instance 646 (Lnet/londatiga/android/ActionItem;) in Lcom/gps/gpsclient/GPSClientActivity;
03-14 15:19:17.888: D/dalvikvm(1807): VFY: replacing opcode 0x22 at 0x0000
03-14 15:19:17.898: D/dalvikvm(1807): DexOpt: unable to opt direct call 0x0f95 at 0x02 in Lcom/gps/gpsclient/GPSClientActivity;.createFloatingMenu
03-14 15:19:17.908: D/dalvikvm(1807): DexOpt: unable to opt direct call 0x0f98 at 0x20 in Lcom/gps/gpsclient/GPSClientActivity;.createFloatingMenu
03-14 15:19:17.968: I/org.osmdroid.views.MapView(1807): Using tile source: org.osmdroid.tileprovider.tilesource.XYTileSource@410e7460
03-14 15:19:17.978: I/org.osmdroid.tileprovider.modules.MapTileFileStorageProviderBase(1807): sdcard state: mounted
03-14 15:19:17.978: I/org.osmdroid.tileprovider.modules.MapTileFileStorageProviderBase(1807): sdcard state: mounted
03-14 15:19:18.038: I/org.osmdroid.tileprovider.MapTileProviderBase(1807): rescale tile cache from 0 to 10
03-14 15:19:18.088: I/org.osmdroid.tileprovider.MapTileProviderBase(1807): Finished rescale in 44ms
03-14 15:19:18.098: D/dalvikvm(1807): GC_CONCURRENT freed 141K, 3% free 6877K/7047K, paused 2ms+7ms
03-14 15:19:18.128: D/dalvikvm(1807): GC_FOR_ALLOC freed 39K, 4% free 7144K/7431K, paused 28ms
03-14 15:19:18.258: D/dalvikvm(1807): GC_CONCURRENT freed 206K, 3% free 7467K/7687K, paused 2ms+3ms
03-14 15:19:18.258: D/AndroidRuntime(1807): Shutting down VM
03-14 15:19:18.268: I/dalvikvm(1807): threadid=3: reacting to signal 3
03-14 15:19:18.288: W/dalvikvm(1807): threadid=1: thread exiting with uncaught exception (group=0x40a671f8)
03-14 15:19:18.298: I/dalvikvm(1807): Wrote stack traces to '/data/anr/traces.txt'
03-14 15:19:18.298: E/AndroidRuntime(1807): FATAL EXCEPTION: main
03-14 15:19:18.298: E/AndroidRuntime(1807): java.lang.NoClassDefFoundError: net.londatiga.android.ActionItem
03-14 15:19:18.298: E/AndroidRuntime(1807):     at com.gps.gpsclient.GPSClientActivity.createFloatingMenu(GPSClientActivity.java:61)
03-14 15:19:18.298: E/AndroidRuntime(1807):     at com.gps.gpsclient.GPSClientActivity.onCreate(GPSClientActivity.java:47)
03-14 15:19:18.298: E/AndroidRuntime(1807):     at android.app.Activity.performCreate(Activity.java:4492)
03-14 15:19:18.298: E/AndroidRuntime(1807):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
03-14 15:19:18.298: E/AndroidRuntime(1807):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920)
03-14 15:19:18.298: E/AndroidRuntime(1807):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)
03-14 15:19:18.298: E/AndroidRuntime(1807):     at android.app.ActivityThread.access$600(ActivityThread.java:123)
03-14 15:19:18.298: E/AndroidRuntime(1807):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)
03-14 15:19:18.298: E/AndroidRuntime(1807):     at android.os.Handler.dispatchMessage(Handler.java:99)
03-14 15:19:18.298: E/AndroidRuntime(1807):     at android.os.Looper.loop(Looper.java:137)
03-14 15:19:18.298: E/AndroidRuntime(1807):     at android.app.ActivityThread.main(ActivityThread.java:4424)
03-14 15:19:18.298: E/AndroidRuntime(1807):     at java.lang.reflect.Method.invokeNative(Native Method)
03-14 15:19:18.298: E/AndroidRuntime(1807):     at java.lang.reflect.Method.invoke(Method.java:511)
03-14 15:19:18.298: E/AndroidRuntime(1807):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
03-14 15:19:18.298: E/AndroidRuntime(1807):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
03-14 15:19:18.298: E/AndroidRuntime(1807):     at dalvik.system.NativeStart.main(Native Method)
03-14 15:19:18.558: D/dalvikvm(1807): GC_CONCURRENT freed 406K, 7% free 7450K/7943K, paused 3ms+2ms
03-14 15:19:18.768: I/dalvikvm(1807): threadid=3: reacting to signal 3
03-14 15:19:18.768: I/dalvikvm(1807): Wrote stack traces to '/data/anr/traces.txt'
03-14 15:19:18.888: I/dalvikvm(1807): threadid=3: reacting to signal 3
03-14 15:19:18.898: I/dalvikvm(1807): Wrote stack traces to '/data/anr/traces.txt'

我认为它对那个构建路径有些想法,但这是我第一次将完整项目包含到构建路径中,所以我对此没有任何经验。导入工作正常。

活动:

package com.gps.gpsclient;



import net.londatiga.android.ActionItem;
import net.londatiga.android.QuickAction;

import org.osmdroid.tileprovider.tilesource.TileSourceFactory;
import org.osmdroid.util.GeoPoint;
import org.osmdroid.views.MapController;
import org.osmdroid.views.MapView;



import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MotionEvent;
import android.view.View;
import android.widget.Button;
import org.osmdroid.views.MapView;


import com.gps.gpsclient.R;




public class GPSClientActivity extends Activity {

private MapView view;
private MapDrawer mainDrawer;
private QuickAction mQuickAction; 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_gps);
        view = (MapView) findViewById(R.id.mapView);
        view.setTileSource(TileSourceFactory.MAPNIK);
        view.setBuiltInZoomControls(true);
        MapController mapController = view.getController();
        mapController.setZoom(10);
        GeoPoint point2 = new GeoPoint(51496994, -134733);
        mapController.setCenter(point2);
        mainDrawer=new MapDrawer(view);
        createFloatingMenu();
        final Button button = (Button) findViewById(R.id.addButton);
        button.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View arg0, MotionEvent arg1) {
                mQuickAction.show(view);
                return false;
            }
        }); 

    }

    public void createFloatingMenu()
    {
        ActionItem item=new ActionItem();
        item.setIcon(getResources().getDrawable(R.drawable.ic_launcher));
        item.setTitle("Custom");
        mQuickAction =new QuickAction(view.getContext());
        mQuickAction.addActionItem(item);


    }


}

希望你能帮忙

【问题讨论】:

    标签: java android logcat noclassdeffounderror


    【解决方案1】:

    清理和构建

    如果这没有帮助,请重新启动 eclipse 并再次清理和构建。

    编辑:

    你说:

    。但是当我将此项目包含到我的项目的构建路径中时,我得到了一个 NoClassDefError。

    您的构建路径中似乎包含了一些库项目。您需要将此外部项目标记为库项目。为此,将项目导入工作区后转到您的主项目。右键单击并转到到属性..并选择左侧的“Android”组。在右侧窗格中,您将在最底部找到一个库面板。单击添加并找到并将另一个项目添加到其中并将其标记为库项目。

    完成此操作后,清理构建并执行我之前所说的操作。Refer this Q/A as well

    如果这解决了您的问题,请将其标记为答案。

    【讨论】:

      猜你喜欢
      • 2012-04-18
      • 1970-01-01
      • 2013-08-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-03
      • 2015-04-24
      相关资源
      最近更新 更多