我创建了一个maven项目,其中只有一个类可用。我想在此类中使用jnetpcap API。为此,我遵循了带有设置1方法(用户库)的jnet
eclipse设置
教程,并创建了一个用户库并将其添加到我的项目中。
JnetTest.java-
此类与jnetpcap经典示例相同
我的系统是Ubuntu 16.10。
我正在使用openjdk版本“ 1.8.0_131”。
库创建步骤-
注意- 我没有在主类中添加vm参数。即-Djava.library.path =“。so文件的父目录的位置”
之后,我右键单击我的项目,然后单击以Java应用程序运行。这将在日食中正常工作。
实际问题- 我只想通过命令行在一台不同的机器上运行该Maven项目。如何使用命令行运行此项目?
我的方法-
<!-- language: lang-xml -->
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.2.1</version>
<executions>
<execution>
<goals>
<goal>java</goal>
</goals>
</execution>
</executions>
<configuration>
<mainClass>com.example.Main</mainClass>
</configuration>
</plugin>
mvn exec:java -Dexec.mainClass="com.example.Main"
但是我得到了例外-
Exception in thread "main" java.lang.UnsatisfiedLinkError:
com.slytechs.library.NativeLibrary.dlopen(Ljava/lang/String;)J
at com.slytechs.library.NativeLibrary.dlopen(Native Method)
at com.slytechs.library.NativeLibrary.(Unknown Source)
at com.slytechs.library.JNILibrary.(Unknown Source)
at com.slytechs.library.JNILibrary.loadLibrary(Unknown Source)
at com.slytechs.library.JNILibrary.register(Unknown Source)
at com.slytechs.library.JNILibrary.register(Unknown Source)
at com.slytechs.library.JNILibrary.register(Unknown Source)
at org.jnetpcap.Pcap.(Unknown Source)
我的方法是正确的还是不执行项目的主类?如果是,那么我的问题的解决方案是什么?如果没有,请提出有用的方法。
JnetPcap要求您在项目中引用两个库:
您看到的异常表明您在运行时缺少#2。在这种情况下,您有两个选择可使库对您的应用程序可用:
您可以通过回显$PATH
系统变量来找出Ubuntu路径上的目录:
> echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin
只需将本机库复制到系统路径中已包含的目录中即可。
另外,您可以使用java.library.path
Java 的参数传递库的位置。假设该库lib
位于您的maven项目目录内的目录中,请使用以下配置:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.2.1</version>
<configuration>
<executable>java</executable>
<arguments>
<argument>-Djava.library.path=${project.basedir}/lib</argument>
<argument>-classpath</argument>
<classpath />
<argument>com.example.Main</argument>
</arguments>
</configuration>
</plugin>
要执行此操作,只需运行:
mvn exec:exec
问题内容: 我正在尝试使用gcc从Ubuntu上的编译简单的C示例。我必须用作gcc的参数以包含所需的库吗? 问题答案: 如果您使用,等获取库(相对于从源构建库),则仅安装软件包还是 _也_安装了获取头文件?Linux软件包通常将运行时库与编译时标头分开。这样,只需要库来满足动态链接的人就不必安装不需要的标头。但是,由于您要进行开发,因此需要这些标头,因此也需要该包。
问题内容: 我想从Go执行perforce命令行“ p4”以执行登录工作。“ p4登录”要求用户输入密码。 如何在Go中运行需要用户输入的程序? 以下代码不起作用。 问题答案: 从os / exec.Command文档: 在执行命令之前,设置命令的Stdin字段。
我正在使用Liquibase(通过其Maven插件)来处理数据库迁移。 然而,并非所有Liquibase功能都可以通过Maven获得。特别是Generate Changelog,只能通过命令行(使用可下载的liquibase.jar)使用如下命令: 如何通过Maven可移植地执行此命令?也就是说,我不想将liquibase.jar文件添加到我的项目结构中。 相反,我想将其列为一个依赖项(我可以手动
如何执行cucumber从maven与标签? 我试过的是 mvn清洁测试-Dcucumber。滤器tags=“@TestTag” 我的pom.xmltestng.xml文件,(是否有一种方法可以避免执行脚本from.xml文件,并直接使用场景或功能文件的标记名称?) 使用cucumber.io7.0.0
亲爱的各位:在获取下表中所有重叠的范围后: 范围 通过使用: 我现在有一些我想避免的额外信息,例如: (a)status='unused'的行 (b)没有重叠的行 在发现范围重叠后,您知道如何避免/过滤(a)和(b)吗?
问题内容: 我想知道系统上的可执行文件使用了哪些库。更具体地说,我想对使用最多的库以及使用它们的二进制文件进行排名。我怎样才能做到这一点? 问题答案: 使用到列表共享为每个可执行文件库。 清理输出 排序,计算计数,按计数排序 要在“ / bin”目录中找到所有可执行文件的答案: 将上面的“ / bin”更改为“ /”以搜索所有目录。 输出(仅针对/ bin目录)将如下所示: 编辑-删除了“ gre