1

我目前正在尝试通过 Maven 运行 Java 代码来制作数据包嗅探工具。目前,我正在运行一个简单的代码来使用 NifSelector 选择所有当前可用的网络接口,但我遇到了以下错误-> 线程“main”java.lang.NoClassDefFoundError 中的异常:org/pcap4j/util/NifSelector。显然,这表明没有找到该类,但我在文档或 SO 中找不到任何可以纠正此错误的内容。我有 pcap4j 的 jar 文件,并将它作为依赖项添加到我的 pom.xml 中。我还在我的 Windows 机器上安装了 npcap(此设置在 Windows 上运行)。

import org.pcap4j.util.NifSelector;

public class App 
{
    public static void main( String[] args )
{
    PcapNetworkInterface device = null;
    try{
        device = new NifSelector().selectNetworkInterface();
    }catch(IOException e){
        e.printStackTrace();
    }
    System.out.println( "Your choice: " + device);
}
}

以上是我尝试使用 NifSelector 类所需的导入语句运行的代码。https://github.com/kaitoy/pcap4j是项目文档的链接。文档中使用的所有示例都与 NifSelector 没有任何问题。任何帮助将不胜感激!

编辑:添加 pom.xml 片段

<dependency>
        <groupId>org.pcap4j</groupId>
        <artifactId>pcap4j-core</artifactId>
        <version>1.8.2</version>
        <type>jar</type>
    </dependency>

    <dependency>
        <groupId>org.pcap4j</groupId>
        <artifactId>pcap4j-packetfactory-static</artifactId>
        <version>1.8.2</version>
    </dependency>

着色器插件的 Pom.xml 片段

<!-- Embed dependencies inside the final JAR -->
                    <plugin>
                            <groupId>org.apache.maven.plugins</groupId>
                            <artifactId>maven-shade-plugin</artifactId>
                            <version>3.1.0</version>
                            <executions>
                                    <execution>
                                            <phase>package</phase>
                                            <goals>
                                                    <goal>shade</goal>
                                            </goals>
                                    </execution>
                            </executions>
                            <configuration>
                                    <finalName>new-$1.0-SNAPSHOT</finalName>
                            </configuration>
                    </plugin>
4

1 回答 1

0

您可能没有在最终 JAR 中包含所有依赖项。仔细检查,如您提到的指南中所述,maven-shade-plugin已正确执行。

<build>
   <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-shade-plugin</artifactId>
            <version>3.1.0</version>
            <executions>
                <execution>
                    <phase>package</phase>
                    <goals>
                        <goal>shade</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <finalName>uber-${project.artifactId}-${project.version}</finalName>
            </configuration>
        </plugin>
    </plugins>
</build>
于 2019-09-16T06:41:09.680 回答