Предупреждение виртуальной машины OpenJDK 64-Bit Server: вы загрузили библиотеку, которая могла отключить защиту стека

может ли кто-нибудь помочь мне с этим сообщением об ошибке.

при попытке скомпилировать проект в eclipse с использованием jNetpcap API

Я выполнил все шаги, указанные на веб-сайте ниже, как настроить среду для дистрибутива Debian.

http://jnetpcap.com/compile/debian

хотя я все еще получаю следующее сообщение об ошибке

Choosedevice ... OpenJDK 64-Bit Server VM Предупреждение: вы загрузили библиотеку /usr/lib/libjnetpcap.so.1.3.b0003, которая могла отключить защиту стека. Теперь виртуальная машина попытается исправить защиту стека. Настоятельно рекомендуется исправить библиотеку с помощью «execstack -c» или связать ее с помощью «-z noexecstack». Исключение в потоке "main" java.lang.UnsatisfiedLinkError: /usr/lib/libjnetpcap.so.1.3.b0003: /usr/lib/libjnetpcap.so.1.3.b0003: mauvaise classe ELF : ELFCLASS32 (Возможная причина: ширина слова архитектуры несоответствие) в java.lang.ClassLoader$NativeLibrary.load(собственный метод) в java.lang.ClassLoader.loadLibrary1(ClassLoader.java:1965) в java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1890) в java.lang .ClassLoader.loadLibrary(ClassLoader.java:1880) в java.lang.Runtime.loadLibrary0(Runtime.java:849) в java.lang.System.loadLibrary(System.java:1088) в org.jnetpcap.Pcap.(Неизвестно Источник) в main.Main_app.choosedevice(Main_app.java:74) в main.Main_app.main(Main_app.java:273)

Кстати, я пытался выполнить «execstac -c», он вообще не работает. Также я потратил дни, пытаясь найти решение, единственный вывод, к которому я пришел, это то, что мне нужно использовать libjnetpcap.so (64 бит), так как у меня 64-битная архитектура на моем Debian. так это то, что мне нужно сделать?

PS: я не могу найти ".deb" для установки этой библиотеки для 64-битной версии.


person Sam Ben    schedule 22.06.2014    source источник
comment
Если вы хотите использовать 32-битную нативную библиотеку, вы должны использовать 32-битный jvm.   -  person Brett Okken    schedule 23.06.2014
comment
есть ли другое решение? с использованием JVM 64 бит   -  person Sam Ben    schedule 23.06.2014
comment
Получите 64-битную версию родной библиотеки — отметьте /usr/lib64, а не /usr/lib.   -  person Brett Okken    schedule 23.06.2014
comment
Возможно, вам потребуется проверить переменную среды LD_LIBRARY_PATH. Если вы работаете с 64-битной jvm, то /usr/lib не должно быть частью LD_LIBRARY_PATH, а /usr/lib64 должно быть.   -  person Brett Okken    schedule 23.06.2014
comment
@BrettOkken: у меня похожая проблема в RHEL с 32-битными библиотеками. Как я могу использовать 32-битную JVM на RHEL 7?   -  person Kevin    schedule 21.01.2016
comment
@BrettOkken убедитесь, что вы используете правильную библиотеку. поскольку у вас 32 JVM, вы должны использовать 32-битную Lib.   -  person Sam Ben    schedule 21.01.2016


Ответы (1)


Что содержит файл /usr/lib/libjnetpcap.so.1.3.b0003?

Если файл 0-байтовый, значит, что-то действительно не так, поэтому попробуйте восстановить систему, переустановив эту библиотеку.

У меня была такая же проблема в smartgit, где использовалась библиотека в локальной папке конфигурации, которая была каким-то образом повреждена и представляла собой файл размером 0 байт. Поэтому мне помогло удаление папки config и перезапуск приложения. Это может быть решением и здесь.

person rubo77    schedule 10.09.2020