【问题标题】:java.lang.NoClassDefFoundError: java.lang.ClassNotFoundException in androidjava.lang.NoClassDefFoundError:android中的java.lang.ClassNotFoundException
【发布时间】:2014-02-28 07:59:25
【问题描述】:

我的应用程序由ffmpegjavacv-android-armopencv-2.4.8-android-arm(.so 文件)和javacppjavacv jars 组成。它工作得很好。

之后,我将 Vitamio library 应用程序添加到我的应用程序中。Vitamio 包含一些罐子,例如 ffmpeg 等。添加后,我收到“找不到类异常”之类的错误。

我的错误信息是: link

我在这段代码中遇到错误:

 private void initRecorder() {

    Log.w(LOG_TAG,"init recorder");

    if (yuvIplimage == null) {
        yuvIplimage = IplImage.create(imageWidth, imageHeight, IPL_DEPTH_8U, 2); //error here.
 //       Log.i(LOG_TAG, "create yuvIplimage");
    }

    Log.i(LOG_TAG, "ffmpeg_url: " + ffmpeg_link);
    recorder = new FFmpegFrameRecorder(ffmpeg_link, imageWidth, imageHeight, 1);
    recorder.setVideoCodec(avcodec.AV_CODEC_ID_H264) ;
    recorder.setFormat("flv");
    recorder.setSampleRate(sampleAudioRateInHz);
    // Set in the surface changed method
   // myPreference.getString("rtmp_url", "sample1");
    recorder.setFrameRate(frameRate);

    Log.i(LOG_TAG, "recorder initialize success");

    audioRecordRunnable = new AudioRecordRunnable();
    audioThread = new Thread(audioRecordRunnable);
}

请帮帮我

【问题讨论】:

  • @MD,错误消息的链接消失了。请重新编辑并放上链接。
  • 在您的日志中:说 libopencv_core.so 文件丢失。检查您的 Android.mk 文件
  • 这可能与这个问题有关:code.google.com/p/javacv/issues/detail?id=199

标签: android ffmpeg http-live-streaming vitamio


【解决方案1】:

在错误日志中

Caused by: java.lang.UnsatisfiedLinkError: dlopen failed: could not load library "libopencv_core.so" needed by "libjniopencv_core.so"; caused by library "libopencv_core.so" not found

您的应用程序中似乎没有加载libopencv_core。 使用

加载此库
System.loadLibrary("libopencv_core")

在使用这个库的任何功能之前。如果你在主活动的onCreate() 中加载它会更好。

【讨论】:

  • 实际上,如果我删除 vitamio 库它的工作。我认为由于这些之间的一些冲突,我会收到此错误。
  • 我更新了我的代码,看看它一次。我关注了这个link。它在添加这个维生素后效果很好,我在这个代码中遇到了错误。
  • @Seshu 我不确定你是否正确,两个库都有相同的ffmpeg 这是冲突的。
  • 尝试在该列表中添加更多库,请参阅stackoverflow.com/a/26273824/979369
【解决方案2】:
  1. 找不到类当您没有在清单文件中声明您的活动时出现异常。
  2. 有时也可以通过清理项目来删除它 转到属性:Java 构建路径 在此勾选 android Private Libraries 将 src 和 gen 文件夹移到顶部。 顺序是先 src 文件夹,然后是 gen 文件夹 还要勾选添加 jar 文件期间包含的所有库

【讨论】:

    【解决方案3】:

    将以下代码块添加到您的代码中

    static
    {
      System.loadLibrary("libopencv_core")
    }
    

    因为它是一个static 块,它会在其他任何东西之前被调用并且你的库将被加载。对您也想使用的所有其他本机库执行此操作。

    【讨论】:

    • 实际上,如果我删除 vitamio 库它的工作。我认为由于这些之间的一些冲突,我会收到此错误。
    猜你喜欢
    • 2014-10-06
    • 2015-01-11
    • 2015-09-23
    • 2015-11-19
    • 2017-05-14
    • 1970-01-01
    • 2016-08-19
    相关资源
    最近更新 更多