bytedeco/javacpp

UnsatisfiedLinkError: no jniopencv_core on NVIDIA Jetson TX2

Open

#599 opened on Sep 1, 2022

View on GitHub
 (9 comments) (0 reactions) (0 assignees)Java (620 forks)batch import
enhancementhelp wantedquestion

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!

Contributor guide