集成百度视频sdk遇到java.lang.NoClassDefFoundError

2018-01-16 23:31:41

集成百度视频sdk遇到一个巨大的坑,说是坑,其实都是自己的疏忽,没有按照demo好好修改。

E/AndroidRuntime: FATAL EXCEPTION: main
                  Process: mamqu.dong.com.dmo, PID: 23290
                  java.lang.NoClassDefFoundError: com.baidu.cloud.media.player.a.b$3
                      at com.baidu.cloud.media.player.a.b.<init>(Unknown Source)
                      at com.baidu.cloud.media.player.a.b.a(Unknown Source)
                      at com.baidu.cloud.media.player.BDCloudMediaPlayer.e(Unknown Source)
                      at com.baidu.cloud.media.player.BDCloudMediaPlayer.setDataSource(Unknown Source)
                      at com.baidu.cloud.media.player.BDCloudMediaPlayer.setDataSource(Unknown Source)
                      at com.baidu.cloud.media.player.BDCloudMediaPlayer.setDataSource(Unknown Source)
                      at mamaxiqu.dong.com.dmo.BDCloudVideoView.openVideo(BDCloudVideoView.java:506)
                      at mamaxiqu.dong.com.dmo.BDCloudVideoView.access$2300(BDCloudVideoView.java:53)
                      at mamaxiqu.dong.com.dmo.BDCloudVideoView$10.onSurfaceCreated(BDCloudVideoView.java:1044)
                      at mamaxiqu.dong.com.dmo.TextureRenderView$SurfaceCallback.onSurfaceTextureAvailable(TextureRenderView.java:283)
                      at android.view.TextureView.getHardwareLayer(TextureView.java:368)
                      at android.view.View.updateDisplayListIfDirty(View.java:15175)
                      at android.view.View.draw(View.java:15971)
                      at android.view.ViewGroup.drawChild(ViewGroup.java:3610)
                      at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3400)
                      at android.view.View.updateDisplayListIfDirty(View.java:15193)
                      at android.view.View.draw(View.java:15971)
                      at android.view.ViewGroup.drawChild(ViewGroup.java:3610)
                      at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3400)
                      at android.view.View.updateDisplayListIfDirty(View.java:15193)
                      at android.view.View.draw(View.java:15971)
                      at android.view.ViewGroup.drawChild(ViewGroup.java:3610)
                      at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3400)
                      at android.view.View.updateDisplayListIfDirty(View.java:15193)
                      at android.view.View.draw(View.java:15971)
                      at android.view.ViewGroup.drawChild(ViewGroup.java:3610)
                      at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3400)
                      at android.view.View.updateDisplayListIfDirty(View.java:15193)
                      at android.view.View.draw(View.java:15971)
                      at android.view.ViewGroup.drawChild(ViewGroup.java:3610)
                      at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3400)
                      at android.view.View.updateDisplayListIfDirty(View.java:15193)
                      at android.view.View.draw(View.java:15971)
                      at android.view.ViewGroup.drawChild(ViewGroup.java:3610)
                      at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3400)
                      at android.view.View.updateDisplayListIfDirty(View.java:15193)
                      at android.view.View.draw(View.java:15971)
                      at android.view.ViewGroup.drawChild(ViewGroup.java:3610)
                      at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3400)
                      at android.view.View.draw(View.java:16204)
                      at com.android.internal.policy.PhoneWindow$DecorView.draw(PhoneWindow.java:2690)
                      at android.view.View.updateDisplayListIfDirty(View.java:15198)
                      at android.view.ThreadedRenderer.updateViewTreeDisplayList(ThreadedRenderer.java:282)
                      at android.view.ThreadedRenderer.updateRootDisplayList(ThreadedRenderer.java:288)
                      at android.view.ThreadedRenderer.draw(ThreadedRenderer.java:323)
                      at android.view.ViewRootImpl.draw(ViewRootImpl.java:2642)
                      at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:2461)
                      at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2094)
                      at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1134)
                      at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6050)
                      at android.view.Choreographer$CallbackRecord.run(Choreographer.java:860)
                      at android.view.Choreographer.doCallbacks(Choreographer.java:672)
                      at android.view.Choreographer.doFrame(Choreographer.java:608)
                      at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:846)
                      at android.os.Handler.handleCallback(Handler.java:742)
                      at android.os.Handler.dispatchMessage(Handler.java:95)
                      at android.os.Looper.loop(Looper.java:154)
                      at android.app.ActivityThread.main(ActivityThread.java:5527)
                      at java.lang.reflect.Method.invoke(Native Method)
                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:739)
                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:629)


报出这样的错误,

java.lang.NoClassDefFoundError: com.baidu.cloud.media.player


很明显是这个包在运行的时候不存在。

但是我看我lib下面,这个包是存在的啊,并且里面的方法也有。

搞了一晚上也没搞定。

最后对了一下demo。

原来是因为我没有引入了


implementation files()
implementation files()

  • 2020-03-13 19:58:19

    推荐Android两种屏幕适配方案

    在Android开发中,由于Android碎片化严重,屏幕分辨率千奇百怪,而想要在各种分辨率的设备上显示基本一致的效果,适配成本越来越高。虽然Android官方提供了dp单位来适配,但其在各种奇怪分辨率下表现却不尽如人意,因此下面探索一种简单且低侵入的适配方式。本文将推荐两种屏幕适配方案,大家可以根据实际情况使用。

  • 2020-03-14 16:35:00

    nuxt.js部署全过程(ubuntu+nginx+node+pm2)

    系统的话本篇是Ubuntu 16.04.6 ,centos也行,大同小异都是Linux。不过如果你是初学者,最好和我使用一样的,因为因为发行版本不同而导致的差异可能导致运行某些东西失败,找问题要找好久。windows server不推荐了,企业用的多,小服务器跑windows server比较费劲。

  • 2020-03-14 23:15:25

    icomoon使用详细介绍

    此篇博文讲述如何利用icomoon导入图标,从而把自己想要的都通过icomoon方式进行,大家都知道,网站以及移动端,用图标还是尽量选择这种。因为直接用image有些图标会失真,从而也是前端开发之中,需求去掌握的一项,很简单的就几个步骤。

  • 2020-03-14 23:39:59

    vuetify和@nuxt/vuetify icon 之我见

    vuetify中v-icon,貌似默认支持 Material Design Icons, Material Icons, Font Awesome 4 and Font Awesome 5, 我自己单独引入了vuetify 用哪一个图标都没有问题。但是用了@nuxt/vuetify只能用mdi-home这样的。不知道因为啥。肯定是封装后,封装成一个了。 但是我修改vuetify的设置,哪一个图标也都能用。哎,不过多研究了。

  • 2020-03-16 15:57:53

    nuxtjs中单独引入Message组件的问题

    // 引入elementUIimport { Message } from 'element-ui';//由于Message组件并没有install 方法供Vue来操作的,是直接返回的,因此按照官方文档单独引入的方法是//会报错的,需要给 Message 添加 install 方法Message.install = function (Vue, options) {Vue.prototype.$message = Message}Vue.use(Message )//消息提示

  • 2020-03-16 16:03:20

    css的var()函数

     随着sass,less预编译的流行,css也随即推出了变量定义var函数。var()函数,就如同sass和less等预编译软件一样,可以定义变量并且进行对应的使用。