UnsatisfiedLinkError: no jniopencv_core on NVIDIA Jetson TX2
#599 opened on Sep 1, 2022
Repository metrics
- Stars
- (4,279 stars)
- PR merge metrics
- (No merged PRs in 30d)
Description
I am building a process for OpenSensorHub on Jetson TX2 using Gradle and I am getting an error when initializing the process:
UnsatisfiedLinkError: no jniopencv_core
My build.gradle dependencies are setup as follows:
dependencies {
implementation 'org.sensorhub:sensorhub-core:' + oshCoreVersion
implementation project(':sensorhub-driver-videocam')
embeddedImpl 'org.jcodec:jcodec-javase:0.1.9'
embeddedImpl group: 'org.bytedeco', name: 'javacv-platform', version: '1.5.7'
embeddedImpl group: 'org.bytedeco.javacpp-presets', name: 'opencv', version: '4.0.1-1.4.4'
embeddedImpl group: 'org.bytedeco', name: 'cuda', version: '11.6-8.3-1.5.7', classifier: 'linux-arm64'
testImplementation('junit:junit:4.13')
}
I have also tried, with the same effect, no jniopencv_core
dependencies {
implementation 'org.sensorhub:sensorhub-core:' + oshCoreVersion
implementation project(':sensorhub-driver-videocam')
embeddedImpl 'org.jcodec:jcodec-javase:0.1.9'
embeddedImpl group: 'org.bytedeco', name: 'javacv-platform', version: '1.5.7'
embeddedImpl 'org.bytedeco:javacpp-presets:1.5.7'
embeddedImpl group: 'org.bytedeco.javacpp-presets', name: 'opencv', version: '4.0.1-1.4.4'
embeddedImpl group: 'org.bytedeco', name: 'cuda', version: '11.6-8.3-1.5.7', classifier: 'linux-arm64'
testImplementation('junit:junit:4.13')
}
The packaging of dependencies is working correctly, however I cannot seem to get the jniopencv_core issue resolved. I read that it was necessary to include the org.bytedeco:javacpp-presets as I did above. As an aside, is there currently no classifier for this package to only select the jars for a particular architecture?
The full error log is given:
2022-09-01 12:00:15.594 ERROR SMLProcessImpl:d3b84935 [ForkJoinPool.commonPool-worker-3] - Error initializing SML process
java.util.concurrent.CompletionException: java.lang.UnsatisfiedLinkError: no jniopencv_core in java.library.path: [/usr/local/cuda-10.2/lib64, ., /usr/java/packages/lib, /usr/lib/aarch64-linux-gnu/jni, /lib/aarch64-linux-gnu, /usr/lib/aarch64-linux-gnu, /usr/lib/jni, /lib, /usr/lib]
at java.base/java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:314)
at java.base/java.util.concurrent.CompletableFuture.completeThrowable(CompletableFuture.java:319)
at java.base/java.util.concurrent.CompletableFuture$AsyncRun.run(CompletableFuture.java:1739)
at java.base/java.util.concurrent.CompletableFuture$AsyncRun.exec(CompletableFuture.java:1728)
at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:290)
at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1020)
at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1656)
at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1594)
at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:183)
Caused by: java.lang.UnsatisfiedLinkError: no jniopencv_core in java.library.path: [/usr/local/cuda-10.2/lib64, ., /usr/java/packages/lib, /usr/lib/aarch64-linux-gnu/jni, /lib/aarch64-linux-gnu, /usr/lib/aarch64-linux-gnu, /usr/lib/jni, /lib, /usr/lib]
at java.base/java.lang.ClassLoader.loadLibrary(ClassLoader.java:2670)
at java.base/java.lang.Runtime.loadLibrary0(Runtime.java:830)
at java.base/java.lang.System.loadLibrary(System.java:1873)
at NativeClassLoader//org.bytedeco.javacpp.Loader.loadLibrary(Loader.java:1800)
at NativeClassLoader//org.bytedeco.javacpp.Loader.load(Loader.java:1402)
at NativeClassLoader//org.bytedeco.javacpp.Loader.load(Loader.java:1214)
at NativeClassLoader//org.bytedeco.javacpp.Loader.load(Loader.java:1190)
at NativeClassLoader//org.bytedeco.javacpp.opencv_core.<clinit>(opencv_core.java:10)
at java.base/java.lang.Class.forName0(Native Method)
at java.base/java.lang.Class.forName(Class.java:398)
at NativeClassLoader//org.bytedeco.javacpp.Loader.load(Loader.java:1269)
at NativeClassLoader//org.bytedeco.javacpp.Loader.load(Loader.java:1214)
at NativeClassLoader//org.bytedeco.javacpp.Loader.load(Loader.java:1190)
at NativeClassLoader//org.bytedeco.javacpp.opencv_core$Algorithm.<clinit>(opencv_core.java:15354)
at NativeClassLoader//com.botts.process.image.FeatureDetectionProcess.loadClassifiers(FeatureDetectionProcess.java:196)
at NativeClassLoader//com.botts.process.image.FeatureDetectionProcess.init(FeatureDetectionProcess.java:125)
at NativeClassLoader//org.vast.process.ExecutableChainImpl.init(ExecutableChainImpl.java:263)
at NativeClassLoader//org.vast.sensorML.AbstractProcessImpl.init(AbstractProcessImpl.java:223)
at NativeClassLoader//org.sensorhub.impl.processing.SMLProcessImpl.initChain(SMLProcessImpl.java:125)
at NativeClassLoader//org.sensorhub.impl.processing.SMLProcessImpl.lambda$doInit$0(SMLProcessImpl.java:107)
at NativeClassLoader//org.sensorhub.utils.Lambdas.lambda$checked$0(Lambdas.java:66)
at java.base/java.util.concurrent.CompletableFuture$AsyncRun.run(CompletableFuture.java:1736)
... 6 common frames omitted
Caused by: java.lang.UnsatisfiedLinkError: Could not find jniopencv_core in class, module, and library paths.
at NativeClassLoader//org.bytedeco.javacpp.Loader.loadLibrary(Loader.java:1767)
... 24 common frames omitted
What am I missing?
Thank you!