致命异常:主java.lang.NoClassDefFoundError:外部library.jar.class Android工作室

时间:2016-02-10 22:41:02

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

我正在开发一个处理语音的Android应用程序,我在JAVA上准备了语音基本项目(依赖于android项目)所以我在JAVA 7编译器中编译了JAVA项目,并将该java项目导出为可运行的jar。 我把这个jar放到我的android studio项目的l​​ibs文件夹中,右键单击选中的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项目本身。

如何解决此错误? 提前谢谢。

1 个答案:

答案 0 :(得分:0)

你是对的,问题在于你试图依赖的库依赖于document.getElementByID("s_time").value = parseInt(localStorage[0]); 包层次结构。 Android没有提供javax,因此这些类在运行时不存在(即使它们确实存在于您的计算机的JDK中,因此您的编译器不会抱怨 - 它'与没有安装特定DLL的PC基本上相同,而PC上的程序需要。)

javax被抛出在首先引用无效类依赖关系的类上,这可能是令人困惑的。这个类确实可能存在于你的jar中,但它需要不存在的类才能完成它的定义 - 所以实际上,你的类没有完全定义。

解决这个问题的唯一方法就是找出一种方法,可以在没有NoClassDefFoundError命名空间的情况下执行任何操作。我听说过尝试将javax移植到Android中的一些尝试,但是它们永远不会结束 - 许多javax.*类最终都会沸腾到原生呼叫,这也不会存在在Android上。