我正在尝试使用JNI将本机库链接到我的Java应用程序。当我通过intelliJ运行应用程序时,它可以正确加载该库,但是当我通过其Jar运行时,它无法加载任何东西。
我收到此异常
java.lang.IllegalArgumentException: name
at sun.misc.URLClassPath$Loader.findResource(URLClassPath.java:703)
at sun.misc.URLClassPath.findResource(URLClassPath.java:225)
at java.net.URLClassLoader$2.run(URLClassLoader.java:572)
at java.net.URLClassLoader$2.run(URLClassLoader.java:570)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findResource(URLClassLoader.java:569)
at org.springframework.boot.loader.LaunchedURLClassLoader.findResource(LaunchedURLClassLoader.java:57)
at java.lang.ClassLoader.getResource(ClassLoader.java:1096)
at com.jniwrapper.DefaultLibraryLoader.findLibrary(SourceFile:181)
at com.jniwrapper.Library.load(SourceFile:127)
我不太了解。
我要执行的代码是
Library nativeLibrary = new Library(dll.path());
nativeLibrary.getFunction("getVersion");
我已经确认dll在Java路径中。 jar和ide都试图在同一位置加载相同的dll,但jar无法加载。
是否使用Jar运行应用程序之间是否有重大区别?