0

NMAP実行可能ファイルを起動して終了するのを待つクイックJavaラッパーを作成しました。私はEclipseを使用しています。自己完結型のパッケージを作成できるように、JavajarファイルにNMAPソース/実行可能ファイルを含めたいと思います。

Eclipse内に、NMAPフォルダー階層を追加しました。Eclipse内では、JavaがNMAPユーティリティを正しく起動し、ユーティリティが終了するのを待ってから終了するのを見ることができます。
ここまでは順調ですね。次に、eclipseを使用してJARファイルをエクスポートします。NMAPフォルダ階層が存在することがわかります。ただし、JARファイルを実行しようとすると、nmap.exeが見つかりません。jarファイルを使用して外部実行可能ファイルを呼び出すことはできますか?そうでない場合、私のオプションは何ですか?もしそうなら、Eclipse内で見つけることができたのに、なぜjarファイル内でそれを見つけることができないのですか?

ありがとう。

4

4 に答える 4

1

通常のファイルとしてアクセスする前に、.exe とその必要なサポート ファイルをディスクに抽出する必要があります (標準的な方法で実行するには必要だと思います)。getResourceAsStream()jar内のクラス ファイルの 1 つを使用して、jar からファイルにリソースをコピーする方法の例を検索できます。

抽出したら、そのまま実行できます(OSによっては実行権などを確保する必要がある場合があります)。

于 2012-05-21T15:23:13.597 に答える
1

「ネイティブ プログラムの実行」機能は、他のファイル (ZIP や JAR など) 内の EXE ファイルを呼び出す方法を認識しません。

これを行う場合は、ファイルをファイル システムの場所に抽出し、そこで呼び出す必要があります。Linux ディストリビューション (PowerPC やその他のライブラリ バージョンなど) が多様であるため、独自のディストリビューションを持ち込むのではなく、代わりにそれをインストールして起動するようにユーザーに依頼する必要があります。

于 2012-05-21T15:23:41.753 に答える
1

私の知る限り、jar ファイルに埋め込まれた実行可能ファイルを実行することはできません。

1 つの解決策は、実行可能ファイルを jar ファイルに埋め込むことです。次に、 を使用getClass().getResourceAsStream("/path/to/executable")してバイトを取得し、それらを一時ファイル ( File.createTempFile()) に出力します。UN*X システムでは、chmod u+x file実行する前に実行する必要があります。最終的には、一時ファイルを削除するか、一度ファイルを作成して毎回再利用し、deleteOnExit().

もちろん、この解決策は、すべてのプラットフォームで動作する実行可能ファイルがあることを意味します。

「実行可能」ファイルがjarファイルに含まれていないため、ソリューションはおそらくEclipseで機能します。

于 2012-05-21T15:23:50.107 に答える
0

Nmap は商用ソフトウェアで自由に使用できないため、これを配布する方法にも注意する必要があります。

Java が Nmap を呼び出すためのオープン ソース ライブラリがありますが、コードを実行している OS に Nmap がインストールされていることを前提としています。その API は Nmap4j であり、sourceforge.net にあります。

于 2012-05-25T03:22:20.497 に答える