ActionBarSherlock:java.lang.NoClassDefFoundError:c

2019-06-26 05:07发布

我想建立使用Eclipse靛蓝和ADT R20与ActionBarSherlock 4.1微小的样本应用程序。

我创建了一个空白的活动一个新的Android项目,复制actionbarsherlock.jar到库,并在构建路径引用它。

该应用程序成功生成,但在开始在任仿真器(使用2.2)或所述装置(使用4.0.4),将其与误差崩溃:

java.lang.NoClassDefFoundError: com.actionbarsherlock.R$styleable
        at com.actionbarsherlock.view.MenuInflater$MenuState.readItem(MenuInflater.java:328)
        ...

我不使用ProGuard。

我试图清理ActionBarSherlock项目,复制新的jar文件放进我的样本项目的库,然后再清洗我的样本项目。

我MainActivity.java很简单:

package com.example.lrn;

import com.actionbarsherlock.app.SherlockActivity;
import com.actionbarsherlock.view.Menu;
import android.os.Bundle;

public class MainActivity extends SherlockActivity {

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

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getSupportMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }
}

菜单上有,但单个项目:

<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@+id/menu_settings"
        android:title="@string/menu_settings"
        android:orderInCategory="100"
        android:showAsAction="ifRoom" />
</menu>

而AndroidManifest.xml中也只是作为Eclipse中创建它:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.lrn"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="16" />

    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".MainActivity"
            android:label="@string/title_activity_main" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

在这一点上我真的不知道我可能已经错过了。

Answer 1:

我通过不同的方式加入ActionBarSherlock到我的Eclipse项目解决了这个问题我自己。

与其模仿actionbarsherlock.jar到库并将其添加到构建路径,我增加一条,作为项目属性的Android的部分引用的项目。

该应用程序现在构建和正确运行在仿真器和设备两者。



Answer 2:

如果你得到:

 ActionBarSherlock: java.lang.NoClassDefFoundError:
         com.actionbarsherlock.R$styleable 

例外,那么你可以通过在清单文件中添加福尔摩斯主题解决这个问题。

android:theme="@style/Theme.Sherlock.Light.DarkActionBar"


Answer 3:

还有与最新的ADT 21.1一个问题,即可能导致此错误浮出水面,即便一切似乎是正确的。 您可以降级到ADT 21和R21的工具修复它。 这里有一个错误报告与一些更详细:

https://code.google.com/p/android/issues/detail?id=42686



Answer 4:

请让你的项目的包名和第三方的lib包名称相同。

例如,如果第三方的lib包名为com.actionbarsherlock和你的项目的包名是com.yourproject这是当然的,你会得到java.lang.NoClassDefFoundError:com.actionbarsherlock.R $设置样式错误。

要使用第三方lib和不使用像迈克尔·汉普顿的答案参考,您应该遵循的步骤:

  1. 重命名com.actionbarsherlock的包名com.yourproject(我假设你的项目的包名是com.yourproject点击你的项目鼠标右键 - > Android的工具 - >重命名应用程序包)

  2. 副本com.actionbarsherlock /斌/ xxx.jar到com.yourproject /库

  3. 复制或合并从xxx.jar资源在com.actionbarsherlock的资源,如价值观,动画,绘制等。

我也遇到了同样的问题,我自己成功使用上述思想的方法。 如果有更多问题,请咨询更多。 我希望所有球员能够解决同样的问题。



Answer 5:

确保ActionBarSherlock项目\根文件夹中有R.java文件



文章来源: ActionBarSherlock: java.lang.NoClassDefFoundError: com.actionbarsherlock.R$styleable