致命异常:主要 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的主要内容,如果未能解决你的问题,请参考以下文章
致命异常:主要 java.lang.NoClassDefFoundError:android.support.v7.internal.widget.TintManager