致命异常:主要 java.lang.NoClassDefFoundError:android.support.v7.internal.widget.TintManager

Posted

技术标签:

【中文标题】致命异常:主要 java.lang.NoClassDefFoundError:android.support.v7.internal.widget.TintManager【英文标题】:FATAL EXCEPTION: main java.lang.NoClassDefFoundError: android.support.v7.internal.widget.TintManager 【发布时间】:2016-03-05 01:58:06 【问题描述】:

我在运行项目时遇到错误。我只是关注这个tutorial 并在我的项目中使用它。

我的代码和教程中的一模一样

public class MainEventActivity extends AppCompatActivity 

private Toolbar toolbar;
private TabLayout tabLayout;
private ViewPager viewPager;

@Override
protected void onCreate(Bundle savedInstanceState) 
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main_event_activity);

    toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);

    getSupportActionBar().setDisplayHomeAsUpEnabled(true);

    viewPager = (ViewPager) findViewById(R.id.viewpager);
    setupViewPager(viewPager);

    tabLayout = (TabLayout) findViewById(R.id.tabs);
    tabLayout.setupWithViewPager(viewPager);


private void setupViewPager(ViewPager viewPager) 
    ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager());
    adapter.addFragment(new OneFragment(), "ONE");
    adapter.addFragment(new TwoFragment(), "TWO");
    adapter.addFragment(new ThreeFragment(), "THREE");
    viewPager.setAdapter(adapter);


class ViewPagerAdapter extends FragmentPagerAdapter 
    private final List<Fragment> mFragmentList = new ArrayList<>();
    private final List<String> mFragmentTitleList = new ArrayList<>();

    public ViewPagerAdapter(FragmentManager manager) 
        super(manager);
    

    @Override
    public Fragment getItem(int position) 
        return mFragmentList.get(position);
    

    @Override
    public int getCount() 
        return mFragmentList.size();
    

    public void addFragment(Fragment fragment, String title) 
        mFragmentList.add(fragment);
        mFragmentTitleList.add(title);
    

    @Override
    public CharSequence getPageTitle(int position) 
        return mFragmentTitleList.get(position);
    

我这样调用 MainEventActivity :

btnNext.setOnClickListener(new View.OnClickListener() 

            @Override
            public void onClick(View view) 
                Intent i = new Intent(MainActivity.this, MainEventActivity.class);
                startActivity(i);
                finish();
            
        );

我的错误日志:

12-01 08:00:29.903  22530-22530/com.erlawkward.albarol.eventlocatorapp
E/androidRuntime﹕ FATAL EXCEPTION: main
    java.lang.NoClassDefFoundError: android.support.v7.internal.widget.TintManager
            at android.support.design.widget.TabLayout$TabView.<init>(TabLayout.java:1145)
            at android.support.design.widget.TabLayout.createTabView(TabLayout.java:635)
            at android.support.design.widget.TabLayout.addTabView(TabLayout.java:669)
            at android.support.design.widget.TabLayout.addTab(TabLayout.java:365)
            at android.support.design.widget.TabLayout.addTab(TabLayout.java:340)
            at android.support.design.widget.TabLayout.setTabsFromPagerAdapter(TabLayout.java:624)
            at android.support.design.widget.TabLayout.setupWithViewPager(TabLayout.java:595)
            at com.erlawkward.albarol.eventlocatorapp.activity.activity.MainEventActivity.onCreate(MainEventActivity.java:41)
            at android.app.Activity.performCreate(Activity.java:5104)
            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
            at android.app.ActivityThread.access$600(ActivityThread.java:141)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
            at android.os.Handler.dispatchMessage(Handler.java:99)
            at android.os.Looper.loop(Looper.java:137)
            at android.app.ActivityThread.main(ActivityThread.java:5041)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:511)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
            at dalvik.system.NativeStart.main(Native Method)

这一行有错误:

    tabLayout.setupWithViewPager(viewPager);

【问题讨论】:

你打电话给compile 'com.android.support:design:23.0.1' @IntelliJAmiya 是的先生,这是我的依赖: compile 'com.android.support:appcompat-v7:23.1.1' compile 'com.android.support:support-v4:23.1.1'编译 'com.mcxiaoke.volley:library-aar:1.0.0' 编译 'com.android.support:design:23.0.1' 我仍然面临问题,编译 'com.android.support:support-v4:23.1.1' compile 'com.android.support:appcompat-v7:23.1.1' compile 'com. android.support:design:23.0.1' @ErlAl,你有什么解决办法 【参考方案1】:

所有支持库必须是相同的版本。尝试将 appcompat-v7 和 support-v4 更改为 23.0.1 或将设计更改为 23.1.1

【讨论】:

我得到了 c:\program files\java\jdk1.7.0_80\bin\java.exe'' 完成了非零退出值 2 问题【参考方案2】:

如果你下载了更高版本的支持库,即使你定义为23.1.1,gradle静默使用更高版本。

您可以检查gradlew app:dependencies -q是否使用了正确的版本。

要修复其上版本切换,请将force = true 设置为所有支持库,如下所示。

compile ('com.android.support:support-v4:23.1.1')
    force = true;

compile ('com.android.support:appcompat-v7:23.1.1')
    force = true;

compile ('com.android.support:design:23.1.1')
    force = true;

compile ('com.android.support:cardview-v7:23.1.1')
    force = true;

compile ('com.android.support:recyclerview-v7:23.1.1')
    force = true;

【讨论】:

【参考方案3】:

我通过改变我的依赖来解决了一个类似的问题:

编译'com.android.support:design:23.1.1'

编译'com.android.support:design:23.+'

我的单位最后是这样的:

compile 'com.android.support:appcompat-v7:23.1.1'
compile 'com.android.support:support-v4:23.0.0'
compile 'com.android.support:cardview-v7:23.0.0'
compile 'com.android.support:design:23.+'

【讨论】:

【参考方案4】:

我认为这是因为你的 gradle 中使用的 lib "compile 'com.mcxiaoke.volley:library-aaa:1.0.0'" 包括不同版本的 'com.android.support:: em>' 在你的 gradle 中定义。

所以你应该这样做:

compile ('com.mcxiaoke.volley:library-aaa:1.0.0') 
    transitive = false

【讨论】:

哇。这确实有效,谢谢。如果可能的话,你能解释一下吗?【参考方案5】:

我通过添加 compile 'com.android.support:design:23.+' 解决了这个问题,尽管我的支持依赖项相似

之前

   compile 'com.android.support:appcompat-v7:23.1.1'
   compile 'com.android.support:support-v4:23.1.1' 
   compile 'com.android.support:design:23.1.1'

之后 - 这对我有用

   compile 'com.android.support:appcompat-v7:23.1.1'
   compile 'com.android.support:support-v4:23.1.1' 
   compile 'com.android.support:design:23.+'

【讨论】:

【参考方案6】:
compile 'com.android.support:appcompat-v7:23.4.0'
compile 'com.android.support:design:23.4.0'

您必须使用与上述相同的依赖版本

【讨论】:

【参考方案7】:

例如尝试使用相同版本设置所有支持库

compile 'com.android.support:appcompat-v7:23.1.1'
compile 'com.android.support:recyclerview-v7:23.1.1'
compile 'com.android.support:design:23.1.1'

【讨论】:

【参考方案8】:

似乎他们已将 TintManager 替换为 AppCompatDrawableManager。

至少我确保我在所有地方都使用了相同的支持库版本 (24.0.0),但它仍然无法正常工作,直到我替换了所有 TintManager 与 AppCompatDrawableManager 一起使用的地方。

而here AppCompatDrawableManager 仍然有标签 TintManager。

【讨论】:

【参考方案9】:

编译'com.android.support:appcompat-v7:23.2.0' 编译'com.android.support:design:23.2.0' 编译'com.android.support:recyclerview-v7:23.2.0' 编译'com.android.support:support-v4:23.2.0' 编译'com.android.support:cardview-v7:23.2.0'

【讨论】:

以上是关于致命异常:主要 java.lang.NoClassDefFoundError:android.support.v7.internal.widget.TintManager的主要内容,如果未能解决你的问题,请参考以下文章

致命异常主要在 Android 上运行应用程序?

致命异常:主要用于数据包嗅探应用程序

致命异常:主要 java.lang.NoClassDefFoundError:android.support.v7.internal.widget.TintManager

获取 Android 运行时:致命异常

在发布(dexguard)上构建但在调试中没有出现致命异常

致命异常: main ,尝试在空对象引用上调用虚拟方法 [重复]