現在、Maven を介して Java コードを実行して、パケット スニッフィング ツールを作成しようとしています。現在、NifSelector を使用して現在利用可能なすべてのネットワーク インターフェイスを選択する簡単なコードを実行していますが、次のエラーが発生します -> Exception in thread "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 クラスにも必要な import ステートメントで実行しようとしているコードです。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>