【问题标题】:FATAL EXCEPTION: main java.lang.NoClassDefFoundError: external library.jar.class Android studio致命异常:主要 java.lang.NoClassDefFoundError:外部 library.jar.class Android Studio
【发布时间】:2016-02-10 22:41:02
【问题描述】:

我正在开发一个处理语音的 android 应用程序,并且我在 JAVA 上准备好了语音基本项目(android 项目的依赖项),因此我在 JAVA 7 编译器中的 Eclipse 中编译了 JAVA 项目,并将该 java 项目导出为可运行的 jar。 我将这个 jar 放入我的 android studio 项目的 libs 文件夹中,然后通过右键单击选定的 AS A 库,我得到了构建成功的消息。但是当我尝试运行 android 项目时,它给了我一个错误提示,

FATAL EXCEPTION: main Process: in.automator.automator, PID: 4242
java.lang.NoClassDefFoundError: jar_filename.Storage.class_in_jar_file

但是上述类在jar文件中,唯一值得怀疑的是所提到的类文件看起来像这样

import javax.sound.sampled.AudioFileFormat;
import javax.sound.sampled.AudioFormat;
import javax.sound.sampled.AudioFormat.Encoding;
import marf.util.InvalidSampleFormatException;

public class MARFAudioFileFormat extends AudioFileFormat {
....

 ...

....

}

它指的是 javax.sound.sampled,所以这可能会导致问题。

我尝试在谷歌上搜索问题,但没有找到可以解决问题的解决方案。我什么都试过了。 我在 android studio 中使用 JRE 7 并在 Compiler & 本身中导出 java 项目。

如何解决这个错误? 提前致谢。

【问题讨论】:

    标签: java android eclipse android-studio javax.sound.sampled


    【解决方案1】:

    您是对的,问题在于您尝试依赖的库又依赖于javax 包层次结构。 Android 不提供javax,因此这些类在运行时不存在(即使它们确实存在于您计算机的 JDK 中,所以您的编译器不会抱怨 - 这与没有安装特定 DLL 的程序基本相同)根据您的 PC 需求)。

    NoClassDefFoundError 被抛出到首先引用无效类依赖项的类上,这可能是令人困惑的地方。该类可能确实存在于您的 jar 中,但它需要不存在的类才能完成其定义 - 所以实际上,您的类没有完全定义。

    解决这个问题的唯一方法是找出一种方法来做任何你想做的事情,而不需要 javax 命名空间。我听说过一些尝试将javax.* 移植到Android 中的尝试,但它们的结局永远不会很好——许多javax 类最终都归结为原生调用,这在Android 上也不存在。

    【讨论】:

    • 哦,我是对的。但实际上我想编写代码来处理该外部 jar 文件中的 wav 文件,然后将其导入 android 以进一步处理另一组数据。所以我希望有一些与您提供的不同的解决方案。无论如何感谢好友的回答:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-02
    • 2012-09-08
    • 1970-01-01
    • 1970-01-01
    • 2015-09-03
    相关资源
    最近更新 更多