【问题标题】:Not able to run jnetpcap on Linux无法在 Linux 上运行 jnetpcap
【发布时间】:2016-03-24 18:43:57
【问题描述】:

我有一个程序正在 JAVA 中读取 Pcap 文件。我已将 jnetpcap jar 包含在其中。除了 jar 文件,我还将 .dll 文件放在 windows 的 System32 文件夹中。我可以在 windows 机器上运行这个程序。

现在我尝试在 Linux 机器上运行相同的程序,但给了我这个错误:

线程“主线程”中的异常 java.lang.UnsatisfiedLinkError: com/slytechs/library/NativeLibrary.dlopen(Ljava/lang/String;)J 在 com.slytechs.library.NativeLibrary.(未知来源) 在 com.slytechs.library.JNILibrary.(未知来源) 在 com.slytechs.library.JNILibrary.loadLibrary(未知来源) 在 com.slytechs.library.JNILibrary.register(未知来源) 在 com.slytechs.library.JNILibrary.register(未知来源) 在 com.slytechs.library.JNILibrary.register(未知来源) 在 org.jnetpcap.nio.JMemory.(未知来源) 在 com.ma.pcapreader.LatencyCalculator.(LatencyCalculator.java:36) 找不到主类:com.ma.pcapreader.LatencyCalculator。程序将退出。

我还将 .so 文件包含在 /usr/lib 和 /usr/share/lib 文件夹中。我仍然遇到同样的错误。请帮我解决这个问题。

【问题讨论】:

  • 建议你检查这个jnetpcap.com/?q=node/39 ...同时检查为什么Could not find the main class被抛出..你也可以尝试在程序参数中添加这个-Djava.library.path=<path to so/dll>
  • 我已经尝试过 -Djava.library.path= 但它不起作用。
  • 您是否尝试过在没有任何 jnetpcap 代码的情况下运行程序.. 只是想知道它是否与 jvm/classpath 相关...
  • 是的,我想要 Linux 的解决方案。因为我的程序已经在windows上运行了。
  • @PratibhaVerma-您找到解决此问题的方法了吗?我在 linux Ubuntu Netbeans 和 eclipse 上也面临同样的问题。

标签: java linux dll jnetpcap


【解决方案1】:

JNetPcap 假定 libpcap 已安装并命名为:“libpcap.so” 如果它是不同的版本(例如 libpcap.so.1),则链接将失败。这是我所做的:

[root@test bin]# ln -s /usr/lib64/libpcap.so.1 /usr/lib64/libpcap.so

[root@test bin]# ln -s /app_path/libjnetpcap.so /usr/lib64/libjnetpcap.so

[root@test bin]# ln -s /app_path/libjnetpcap-pcap100.so /usr/lib64/libjnetpcap-pcap100.so

【讨论】:

    猜你喜欢
    • 2012-06-08
    • 2017-08-20
    • 2014-04-08
    • 2013-05-28
    • 2013-04-10
    • 1970-01-01
    • 2014-11-10
    • 2021-11-25
    • 2017-05-26
    相关资源
    最近更新 更多