bytedeco/javacpp

NPE when loading a built library

Open

#584 aperta il 23 giu 2022

Vedi su GitHub
 (4 commenti) (0 reazioni) (0 assegnatari)Java (620 fork)batch import
bughelp wanted

Metriche repository

Star
 (4279 star)
Metriche merge PR
 (Nessuna PR mergiata in 30 g)

Descrizione

Hello. I've found the following issue.

I built dll-library of generated JNI C++ integration code and tried to load it via Loader.loadLibrary but I got a NullPointerException. Here is the stacktrace:

java.lang.ExceptionInInitializerError
Caused by: java.lang.NullPointerException
	at java.util.ArrayDeque.addFirst(ArrayDeque.java:233)
Caused by: java.lang.NullPointerException

	at java.util.ArrayDeque.push(ArrayDeque.java:508)
	at org.bytedeco.javacpp.Loader.loadLibrary(Loader.java:1651)
	at org.bytedeco.javacpp.Loader.loadLibrary(Loader.java:1611)
	at org.bytedeco.javacpp.Loader.loadLibrary(Loader.java:1603)
	at org.bytedeco.javacpp.Loader.loadLibrary(Loader.java:1597)
	at Test.<clinit>(Test.java:12)

I think it is related to method which puts cls to the related method as null:

public static String loadLibrary(URL[] urls, String libnameversion, String ... preloaded) {
    return loadLibrary(null, urls, libnameversion, preloaded);
}

public static synchronized String loadLibrary(Class<?> cls, URL[] urls, String libnameversion, String ... preloaded) {
    //...
    classStack.get().push(cls);
    //...
}

I would suggest to return some more understandable error message. The version of javacpp I've used is 1.5.7

Guida contributor