bytedeco/javacpp

NPE when loading a built library

Open

#584 opened on 2022年6月23日

GitHub で見る
 (4 comments) (0 reactions) (0 assignees)Java (620 forks)batch import
bughelp wanted

Repository metrics

Stars
 (4,279 stars)
PR merge metrics
 (30d に merged PR はありません)

説明

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

コントリビューターガイド