Java Android Studio ClassNotFoundException
每次运行project时将外部LIB导入到项目后,我会得到ClassNotFoundException:Java Android Studio ClassNotFoundException,java,android,android-studio,gradle,neuroph,Java,Android,Android Studio,Gradle,Neuroph,每次运行project时将外部LIB导入到项目后,我会得到ClassNotFoundException: 06-09 18:22:49.759 12976-13005/? E/AndroidRuntime: FATAL EXCEPTION: dataLoader Process: prm.soundpaint, PID: 12976 org.neuroph.core.exceptions.NeurophException: Class not found while trying to read
06-09 18:22:49.759 12976-13005/? E/AndroidRuntime: FATAL EXCEPTION: dataLoader
Process: prm.soundpaint, PID: 12976
org.neuroph.core.exceptions.NeurophException: Class not found while trying to read neural network from file!
at org.neuroph.core.NeuralNetwork.load(NeuralNetwork.java:638)
at prm.soundpaint.DrawingView$1.run(DrawingView.java:60)
at java.lang.Thread.run(Thread.java:818)
Caused by: java.lang.ClassNotFoundException: ch.qos.logback.classic.Logger
at java.lang.Class.classForName(Native Method)
at java.lang.Class.forName(Class.java:308)
at java.io.ObjectInputStream.resolveClass(ObjectInputStream.java:2263)
at java.io.ObjectInputStream.readNewClassDesc(ObjectInputStream.java:1641)
at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:657)
at java.io.ObjectInputStream.readNewObject(ObjectInputStream.java:1782)
at java.io.ObjectInputStream.readNonPrimitiveContent(ObjectInputStream.java:761)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:1983)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:1940)
at java.io.ObjectInputStream.readFieldValues(ObjectInputStream.java:1113)
at java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:454)
at org.neuroph.core.NeuralNetwork.readObject(NeuralNetwork.java:651)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at java.io.ObjectInputStream.readObjectForClass(ObjectInputStream.java:1330)
at java.io.ObjectInputStream.readHierarchy(ObjectInputStream.java:1242)
at java.io.ObjectInputStream.readNewObject(ObjectInputStream.java:1835)
at java.io.ObjectInputStream.readNonPrimitiveContent(ObjectInputStream.java:761)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:1983)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:1940)
at org.neuroph.core.NeuralNetwork.load(NeuralNetwork.java:631)
at prm.soundpaint.DrawingView$1.run(DrawingView.java:60)
at java.lang.Thread.run(Thread.java:818)
Caused by: java.lang.ClassNotFoundException: Didn't find class "ch.qos.logback.classic.Logger" on path: DexPathList[[zip file "/data/app/prm.soundpaint-1/base.apk"],nativeLibraryDirectories=[/vendor/lib, /system/lib]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
at java.lang.ClassLoader.loadClass(ClassLoader.java:469)
at java.lang.Class.classForName(Native Method)
at java.lang.Class.forName(Class.java:308)
at java.io.ObjectInputStream.resolveClass(ObjectInputStream.java:2263)
at java.io.ObjectInputStream.readNewClassDesc(ObjectInputStream.java:1641)
at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:657)
at java.io.ObjectInputStream.readNewObject(ObjectInputStream.java:1782)
at java.io.ObjectInputStream.readNonPrimitiveContent(ObjectInputStream.java:761)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:1983)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:1940)
at java.io.ObjectInputStream.readFieldValues(ObjectInputStream.java:1113)
at java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:454)
at org.neuroph.core.NeuralNetwork.readObject(NeuralNetwork.java:651)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at java.io.ObjectInputStream.readObjectForClass(ObjectInputStream.java:1330)
at java.io.ObjectInputStream.readHierarchy(ObjectInputStream.java:1242)
at java.io.ObjectInputStream.readNewObject(ObjectInputStream.java:1835)
at java.io.ObjectInputStream.readNonPrimitiveContent(ObjectInputStream.java:761)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:1983)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:1940)
at org.neuroph.core.NeuralNetwork.load(NeuralNetwork.java:631)
at prm.soundpaint.DrawingView$1.run(DrawingView.java:60)
at java.lang.Thread.run(Thread.java:818)
Suppressed: java.lang.ClassNotFoundException: ch.qos.logback.classic.Logger
at java.lang.Class.classForName(Native Method)
at java.lang.BootClassLoader.findClass(ClassLoader.java:781)
at java.lang.BootClassLoader.loadClass(ClassLoader.java:841)
at java.lang.ClassLoader.loadClass(ClassLoader.java:504)
... 24 more
Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack available
jar位于“libs”文件夹中:
我还向build.gradle添加了依赖项:
android {
compileSdkVersion 27
defaultConfig {
applicationId "prm.soundpaint"
minSdkVersion 19
targetSdkVersion 27
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:27.1.1'
implementation 'com.android.support.constraint:constraint-layout:1.1.0'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
implementation files('libs/neuroph-core-2.94.jar')
implementation files('libs/neuroph-imgrec-2.94.jar')
implementation files('libs/neuroph-ocr-2.94.jar')
}
它在初始化对象的行中崩溃:
private Runnable loadDataRunnable = new Runnable() {
public void run() {
InputStream irs = getResources().openRawResource(R.raw.m1);
nnet = NeuralNetwork.load(irs);
}
};
我试图通过在android studio中发布instant run来解决这个问题,但没有任何效果。我还试图:
- 删除生成文件夹,清理并重新生成项目
- 使缓存无效并重新启动
- 重启设备
- 在build.gradle和清单文件中启用多索引: 编译'com.android.support:multidex:1.0.0' 多索引启用真 android:name=“android.support.multidex.MultiDexApplication”
- 通过dexOptions禁用preDexLibraries{ preDexLibraries错误 }
不幸的是,应用程序仍然在每次运行时崩溃。我有安卓5的设备。有人知道如何解决这个问题吗?你能发送你工作区的屏幕截图吗?图书馆是否全面更新?etcI用截图更新了帖子。2.94是本libs的最新版本。Multidex不会发现不存在的类。不要使用JAR文件。。。删除它们。添加
implementation'org.neuroph:neuroph core:2.94'
另外,请记住,并非所有Java库都可以被Android使用。第二个错误是ClassNotFoundException:ch.qos.logback.classic
,因为在Android中不使用logback