код:Когда я запускаю следующий код, он выбрасывает исключение, почему?
public class JniTest {
static {
System.load("/usr/lib/libJniTest.so"); //It run have no exception and true
//System.loadLibrary("libJniTest");
}
public native void sayHello();
public static void main(String[] args) {
System.out.println(System.getProperties().getProperty("java.library.path"));
new JniTest().sayHello();
}
}
Если использовать комментарии код вместо "System.load("/usr/lib/libJniTest.so")
, он будет бросать исключение:
Exception in thread "main" java.lang.UnsatisfiedLinkError: no libJniTest in java.library.path!
У меня есть вход
export LD_LIBRARY_PATH=/usr/lib in /etc/profile and set vm arguments:
-Djava.library.path=/usr/lib
Помогите мне, пожалуйста!
ли вы пробовали 'System.load (JniTest.class.getClass() getResource (». /usr/lib/libJniTest.so "). toString());'? Как я вижу, * libJniTest.so * находится вне вашего пакета классов. – Azad
Если использовать код комментариев вместо «System.load («/usr/lib/libJniTest.so »), он будет генерировать исключение – xjliao
@Azad Это предложение не имеет смысла. Вы не можете загружать файлы .so из файлов JAR, и вы также не можете загружать их из URL. 'getResource()' возвращает 'URL,' и 'load()' требует аргумента path, а не URL. – EJP