deeplearning4j / deeplearning4j-examples

Deeplearning4j Examples (DL4J, DL4J Spark, DataVec)
http://deeplearning4j.konduit.ai
Other
2.45k stars 1.82k forks source link

'NoAvailableBackendException' occur when running project on the android studio emulator #1055

Closed QueeneTam closed 2 years ago

QueeneTam commented 2 years ago

Issue Description

I want to use the ND4j library to do some operations in java similar to numpy in python, but 'NoAvailableBackendException' occur when I try to implement my project on android studio emulator:

E/AndroidRuntime: FATAL EXCEPTION: main Process: Peaks.R, PID: 12232 java.lang.ExceptionInInitializerError at org.nd4j.linalg.factory.Nd4j.create(Nd4j.java:3376) at Peaks.R.RPeakDetector.getR(RPeakDetector.java:468) at Peaks.R.getPeaks.onActivityResult(getPeaks.java:120) at android.app.Activity.dispatchActivityResult(Activity.java:8305) at android.app.ActivityThread.deliverResults(ActivityThread.java:5008) at android.app.ActivityThread.handleSendResult(ActivityThread.java:5056) at android.app.servertransaction.ActivityResultItem.execute(ActivityResultItem.java:51) at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135) at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2066) at android.os.Handler.dispatchMessage(Handler.java:106) at android.os.Looper.loop(Looper.java:223) at android.app.ActivityThread.main(ActivityThread.java:7656) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947) Caused by: java.lang.RuntimeException: org.nd4j.linalg.factory.Nd4jBackend$NoAvailableBackendException: Please ensure that you have an nd4j backend on your classpath. Please see: https://deeplearning4j.konduit.ai/nd4j/backend at org.nd4j.linalg.factory.Nd4j.initContext(Nd4j.java:5095) at org.nd4j.linalg.factory.Nd4j.(Nd4j.java:270) at org.nd4j.linalg.factory.Nd4j.create(Nd4j.java:3376)  at Peaks.R.RPeakDetector.getR(RPeakDetector.java:468)  at Peaks.R.getPeaks.onActivityResult(getPeaks.java:120)  at android.app.Activity.dispatchActivityResult(Activity.java:8305)  at android.app.ActivityThread.deliverResults(ActivityThread.java:5008)  at android.app.ActivityThread.handleSendResult(ActivityThread.java:5056)  at android.app.servertransaction.ActivityResultItem.execute(ActivityResultItem.java:51)  at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)  at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2066)  at android.os.Handler.dispatchMessage(Handler.java:106)  at android.os.Looper.loop(Looper.java:223)  at android.app.ActivityThread.main(ActivityThread.java:7656)  at java.lang.reflect.Method.invoke(Native Method)  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)  Caused by: org.nd4j.linalg.factory.Nd4jBackend$NoAvailableBackendException: Please ensure that you have an nd4j backend on your classpath. Please see: https://deeplearning4j.konduit.ai/nd4j/backend at org.nd4j.linalg.factory.Nd4jBackend.load(Nd4jBackend.java:196) at org.nd4j.linalg.factory.Nd4j.initContext(Nd4j.java:5092) at org.nd4j.linalg.factory.Nd4j.(Nd4j.java:270)  at org.nd4j.linalg.factory.Nd4j.create(Nd4j.java:3376)  at Peaks.R.RPeakDetector.getR(RPeakDetector.java:468)  at Peaks.R.getPeaks.onActivityResult(getPeaks.java:120)  at android.app.Activity.dispatchActivityResult(Activity.java:8305)  at android.app.ActivityThread.deliverResults(ActivityThread.java:5008)  at android.app.ActivityThread.handleSendResult(ActivityThread.java:5056)  at android.app.servertransaction.ActivityResultItem.execute(ActivityResultItem.java:51)  at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)  at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2066)  at android.os.Handler.dispatchMessage(Handler.java:106)  at android.os.Looper.loop(Looper.java:223)  at android.app.ActivityThread.main(ActivityThread.java:7656)  at java.lang.reflect.Method.invoke(Native Method)  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)  I/Process: Sending signal. PID: 12232 SIG: 9

Version Information

work in android studio, runtime version:11.0.10 amd64, emulator is PIXEL XL API 30

my gradle information is as following:

android { compileSdkVersion 31 defaultConfig { applicationId "Peaks.R" minSdkVersion 21 targetSdkVersion 31 versionCode 1 versionName "1.0" testInstrumentationRunner 'androidx.test.runner.AndroidJUnitRunner' } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } packagingOptions { exclude 'META-INF/DEPENDENCIES' exclude 'META-INF/LICENSE.md' exclude 'META-INF/LICENSE-notice.md' exclude 'META-INF/INDEX.LIST' } }

dependencies { implementation 'org.pytorch:pytorch_android:1.7.0' implementation 'org.pytorch:pytorch_android_torchvision:1.7.0' implementation('com.github.psambit9791:jdsp:0.8.0') { exclude group: 'org.apache.maven.surefire', module: 'common-java5' exclude group: 'org.apache.maven.surefire', module: 'surefire-api' } implementation 'androidx.appcompat:appcompat:1.0.0' implementation 'androidx.constraintlayout:constraintlayout:1.1.3' implementation 'com.google.android.material:material:1.0.0' implementation 'org.python:jython-standalone:2.7.0' implementation files('libs/slf4j-api-2.0.0-alpha5.jar') implementation files('libs/nd4j-api-1.0.0-M1.1.jar') implementation files('libs/nd4j-common-1.0.0-M1.1.jar') implementation files('libs/nd4j-native-platform-1.0.0-M1.1.jar')

testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test.ext:junit:1.1.1'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0'

}

I have tried a lot of methods but they didn't work.

agibsonccc commented 2 years ago

Please use the community forums for further communication. Apologies, but this is right at the top of the readme.