Исключение в потоке main java.lang.UnsatisfiedLinkError:com.slytechs.library.NativeLibrary.dlopen(Ljava/lang/String;)J

Я пытаюсь преобразовать файлы .pcap в файлы .xml, используя этот репозиторий https://github.com/ISCX/ISCXFlowMeter для моего проекта глубокого обучения. Я новичок в java, поэтому не могу понять, как решить эту проблему. Я использую 32-битный JDK на 64-битной Ubuntu. Похоже, проблема с jnetpcap. Пожалуйста, помогите мне, так как мой крайний срок очень близок. Спасибо.

введите здесь описание изображения


person a2nineu    schedule 11.08.2019    source источник


Ответы (1)


По внешнему виду я бы сказал, что вам не хватает внешней библиотеки, например, общего объекта (.so) в Linux или библиотеки динамической компоновки (.dll) в Windows. Если бы вы разделили все исключение, мы могли бы узнать, где именно возникает исключение, и попытаться увидеть, говорит ли код нам, где ожидается найти библиотеку. В противном случае я бы посмотрел на ваш путь к классам и убедился, что он содержит соответствующие динамические библиотеки, необходимые jnetpcap (читая документ, jnetpcap — это просто Java-оболочка над существующими не-Java-утилитами, так что имеет смысл, что существуют не-Java-зависимости для предоставлять).

Я отследил код в вашей трассировке стека на Github и обнаружил, что было выдано исключение здесь при загрузке библиотек в это аннотация. Поэтому я предполагаю, что в вашем пути к классам отсутствует одна из следующих библиотек: wpcap, pcap, jnetpcap-pcap100, jnetpcap. Два из них можно найти здесь для Linux (Windows доступна в том же репозитории).

person Dici    schedule 11.08.2019
comment
Я приложил изображение. Проверьте это, пожалуйста. - person a2nineu; 11.08.2019
comment
Здесь возникает ошибка: github.com/ruedigergad/clj-net-pcap/blob/master/jnetpcap/. Я продолжу код, а пока, пожалуйста, напечатайте путь к классам. - person Dici; 11.08.2019
comment
Как я могу распечатать путь к классам? Я имею в виду, для какого класса вы хотите, чтобы я напечатал путь к классам? - person a2nineu; 11.08.2019
comment
Я также следовал последним 2 ответам, но это не сработало. stackoverflow .com/questions/39048964/ - person a2nineu; 11.08.2019
comment
Путь к классам — это то, что вы устанавливаете перед запуском JVM (хотя его можно динамически изменить, но реже). Как вы запускаете свое приложение? Вероятно, есть способы распечатать ваш путь к классам из Java, поищите его в Интернете. - person Dici; 11.08.2019
comment
Ваше исключение выдается либо там (github.com/ruedigergad/clj-net-pcap/blob/master/jnetpcap/) или строка 299, не могу сказать из вашей трассировки стека. Функция была вызвана с использованием следующих параметров: github.com/ruedigergad/clj-net-pcap/blob/master/jnetpcap/ - person Dici; 11.08.2019
comment
Можете ли вы запустить код через отладчик и поставить точки останова в местах, которые я вам показал? - person Dici; 11.08.2019
comment
Проверьте /home/osama/New/ISCXFlowMeter/src/main/java/ /home/osama/New/jnetpcap.jar /home/osama/New/commons-math3-3.6.1/commons-math3-3.6.1.jar /home/osama/новый/log4j-api-2.12.0.jar /home/osama/новый/log4j-core-2.12.0.jar - person a2nineu; 11.08.2019
comment
Я не использую IDE, мне нужно запустить этот код в Google Colab для моего проекта. поэтому я просто буду использовать терминал для любой операции. - person a2nineu; 11.08.2019
comment
Можете ли вы проверить, пожалуйста, ссылку stackoverflow? Вроде была аналогичная проблема. - person a2nineu; 11.08.2019
comment
Я отследил исключение до конца: github.com/ruedigergad/clj-net-pcap/blob/master/jnetpcap/. Вы должны знать, как называется библиотека, которую он пытался загрузить, что вы можете сделать с помощью отладчика. - person Dici; 11.08.2019
comment
@a2nineu Я не думаю, что для этого нам нужен StackOverflow. У нас есть весь код, доступный на Github, мы точно знаем, что выполняется. - person Dici; 11.08.2019
comment
Я думаю, что это библиотека libjnetpcap.so или libjnetpcap-pcap100.so. - person a2nineu; 11.08.2019
comment
Убедитесь, что в пути к классам доступны следующие двоичные файлы: wpcap, pcap, jnetpcap-pcap100, jnetpcap. Для Linux вы можете найти два из этих двоичных файлов здесь: github.com/ruedigergad/clj-net-pcap/tree/master/jnetpcap/native/ - person Dici; 11.08.2019
comment
Вы имеете в виду так: CLASSPATH=/path/to/.sofiles - person a2nineu; 11.08.2019
comment
Зависит от того, как вы запускаете приложение. Я бы сделал что-то подобное, если бы вы сделали это в CLI: java -cp "path/to/jars:path/to/so/files" your/main/class - person Dici; 11.08.2019
comment
пути классов: /home/osama/New/ISCXFlowMeter/src/main/java/ /home/osama/New/jnetpcap.jar /home/osama/New/commons-math3-3.6.1/commons-math3-3.6.1 .jar /home/osama/New/log4j-api-2.12.0.jar /home/osama/New/log4j-core-2.12.0.jar /home/osama/libjnetpcap.so /home/osama/libjnetpcap-pcap100 .так - person a2nineu; 11.08.2019
comment
Это недопустимый путь к классам, пути должны быть разделены :. Можете ли вы использовать отладчик, чтобы выяснить, какая библиотека не загружается? - person Dici; 11.08.2019
comment
Я использовал: в bashrc это вывод java-программы. Подскажите, пожалуйста, как пользоваться отладчиком? Спасибо - person a2nineu; 11.08.2019
comment
IDE даст вам это из коробки, это очень полезный инструмент для некоторых исследований. - person Dici; 11.08.2019