如何解决"NoClassDefFoundError"问题? [英] How to solve "NoClassDefFoundError"?

查看:87
本文介绍了如何解决"NoClassDefFoundError"问题?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在stackoverflow中提到了与此问题有关的一些问题.但不幸的是无法解决问题.例如,我尝试更改构建路径中 src gen 文件夹的顺序.

现在,当我运行该应用程序时.我收到

  01-09 09:12:36.931:E/dalvikvm(24536):找不到类com.example.mqtt_designlayout_00.MainActivity $ 1',从方法com.example.mqtt_designlayout_00.MainActivity.setUpNavDrawer引用 

logcat 输出:

  01-09 09:17:18.311:E/AndroidRuntime(24869):致命异常:主要01-09 09:17:18.311:E/AndroidRuntime(24869):进程:com.example.mqtt_designlayout_00,PID:2486901-09 09:17:18.311:E/AndroidRuntime(24869):java.lang.NoClassDefFoundError:com.example.mqtt_designlayout_00.MainActivity $ 101-09 09:17:18.311:E/AndroidRuntime(24869):在com.example.mqtt_designlayout_00.MainActivity.setUpNavDrawer(MainActivity.java:124)01-09 09:17:18.311:E/AndroidRuntime(24869):在com.example.mqtt_designlayout_00.MainActivity.initViews(MainActivity.java:104)01-09 09:17:18.311:E/AndroidRuntime(24869):在com.example.mqtt_designlayout_00.MainActivity.onCreate(MainActivity.java:43)01-09 09:17:18.311:E/AndroidRuntime(24869):在android.app.Activity.performCreate(Activity.java:5389)01-09 09:17:18.311:E/AndroidRuntime(24869):在android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105)01-09 09:17:18.311:E/AndroidRuntime(24869):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2246) 

代码:

eclipse将此行指出为错误: navDrawerToggle = new ActionBarDrawerToggle(MainActivity.this,navDrawerLayout,R.string.navdrawer_opened,R.string.navdrawer_closed)

  private void setUpNavDrawer(){//TODO自动生成的方法存根navDrawerModel = new ArrayList< NavDrawerModell>();navDrawerModel.add(新的NavDrawerModell(navDrawerIcons.getResourceId(0,-1),navDrawerOptions [0],ECO_ASSISTANT_DESC)));navDrawerModel.add(新的NavDrawerModell(navDrawerIcons.getResourceId(1,-1),navDrawerOptions [1],DATA_LOGGER_DESC)));navDrawerModel.add(新的NavDrawerModell(navDrawerIcons.getResourceId(2,-1),navDrawerOptions [2],ECO_ASSISTANT_DESC)));navDrawerIcons.recycle();//回收类型化的数组.在此行之后,切勿触摸类型化的数组.adapter = new NavDrawerListAdapter(getApplicationContext(),this.navDrawerModel);cabinetListView.setAdapter(adapter);//启用操作栏应用程序图标并将其作为切换按钮getActionBar().setDisplayHomeAsUpEnabled(true);getActionBar().setHomeButtonEnabled(true);mTitle = mDrawerTitle = getTitle();navDrawerToggle = new ActionBarDrawerToggle(MainActivity.this,navDrawerLayout,R.string.navdrawer_opened,R.string.navdrawer_closed){@Override公共无效onDrawerOpened(查看抽屉视图){//TODO自动生成的方法存根super.onDrawerOpened(drawerView);getActionBar().setTitle(mDrawerTitle);invalidateOptionsMenu();//调用onPrepareOptionsMenu()隐藏操作栏图标}@Override公共无效onDrawerClosed(查看抽屉视图){//TODO自动生成的方法存根super.onDrawerClosed(drawerView);getActionBar().setTitle(mTitle);invalidateOptionsMenu();//调用onPrepareOptionsMenu()以显示操作栏图标}};navDrawerLayout.setDrawerListener(navDrawerToggle);抽屉式ListView.setOnItemClickListener(新的SlideMenuClickListener());} 

解决方案

这是由代码所依赖的类文件引起的,并且该类文件在编译时存在,但在运行时未找到.在构建时间和运行时类路径中寻找差异.

i referred to some questions related to this issue in stackoverflow. but unfortunately non of the solved the problem. for an example, i tried to change the order of the src and gen folders in build path.

now when i run the App. i receive

01-09 09:12:36.931: E/dalvikvm(24536): Could not find class 'com.example.mqtt_designlayout_00.MainActivity$1', referenced from method com.example.mqtt_designlayout_00.MainActivity.setUpNavDrawer

and the logcat output:

01-09 09:17:18.311: E/AndroidRuntime(24869): FATAL EXCEPTION: main
01-09 09:17:18.311: E/AndroidRuntime(24869): Process: com.example.mqtt_designlayout_00, PID:   
24869
01-09 09:17:18.311: E/AndroidRuntime(24869): java.lang.NoClassDefFoundError:   
com.example.mqtt_designlayout_00.MainActivity$1

01-09 09:17:18.311: E/AndroidRuntime(24869):    at  
com.example.mqtt_designlayout_00.MainActivity.setUpNavDrawer(MainActivity.java:124)
01-09 09:17:18.311: E/AndroidRuntime(24869):    at com.   
example.mqtt_designlayout_00.MainActivity.initViews(MainActivity.java:104)
01-09 09:17:18.311: E/AndroidRuntime(24869):    at 
com.example.mqtt_designlayout_00.MainActivity.onCreate(MainActivity.java:43)
01-09 09:17:18.311: E/AndroidRuntime(24869):    at  
android.app.Activity.performCreate(Activity.java:5389)
01-09 09:17:18.311: E/AndroidRuntime(24869):    at 
android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105)

01-09 09:17:18.311: E/AndroidRuntime(24869):    at 
android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2246)

Code:

eclipse points out this line as error : navDrawerToggle = new ActionBarDrawerToggle(MainActivity.this, navDrawerLayout, R.string.navdrawer_opened, R.string.navdrawer_closed)

private void setUpNavDrawer() {
    // TODO Auto-generated method stub
    navDrawerModel = new ArrayList<NavDrawerModell>();
    navDrawerModel.add(new NavDrawerModell(navDrawerIcons.getResourceId(0, -1), navDrawerOptions[0], ECO_ASSISTANT_DESC));
    navDrawerModel.add(new NavDrawerModell(navDrawerIcons.getResourceId(1, -1), navDrawerOptions[1], DATA_LOGGER_DESC));
    navDrawerModel.add(new NavDrawerModell(navDrawerIcons.getResourceId(2, -1), navDrawerOptions[2], ECO_ASSISTANT_DESC));
    navDrawerIcons.recycle(); // to recycle the typed array. never touch the typed array after this line.

    adapter = new NavDrawerListAdapter(getApplicationContext(), this.navDrawerModel);
    drawerListView.setAdapter(adapter);

    // enabling action bar app icon and behaving it as toggle button
    getActionBar().setDisplayHomeAsUpEnabled(true);
    getActionBar().setHomeButtonEnabled(true);

    mTitle = mDrawerTitle = getTitle();

    navDrawerToggle = new ActionBarDrawerToggle(MainActivity.this, navDrawerLayout, R.string.navdrawer_opened, R.string.navdrawer_closed) {

        @Override
        public void onDrawerOpened(View drawerView) {
            // TODO Auto-generated method stub
            super.onDrawerOpened(drawerView);
            getActionBar().setTitle(mDrawerTitle);
            invalidateOptionsMenu(); // calling onPrepareOptionsMenu() to hide action bar icons
        }

        @Override
        public void onDrawerClosed(View drawerView) {
            // TODO Auto-generated method stub
            super.onDrawerClosed(drawerView);
            getActionBar().setTitle(mTitle);
            invalidateOptionsMenu(); // calling onPrepareOptionsMenu() to show action bar icons
        }
    };
    navDrawerLayout.setDrawerListener(navDrawerToggle);
    drawerListView.setOnItemClickListener(new SlideMenuClickListener());
}

解决方案

This is caused when there is a class file that your code depends on and it is present at compile time but not found at runtime. Look for differences in your build time and runtime classpaths.

这篇关于如何解决"NoClassDefFoundError"问题?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆