2011-01-20 16 views
5

(maven2プロジェクトの)JARファイルがあり、mavenがいくつかのパッケージが見つかりませんでした(org.openanzo.client.jenaが正確です)という報告があります。私は、依存関係解決の結果としてダウンロードされたJARファイルを掘り下げ、これらのJARファイルからどのようなパッケージが利用可能であるかを調べたいと思います。洞察?jarファイルで定義されたパッケージを見つけるにはどうすればよいですか?

更新:明らかに、jarファイルの内部を調べる唯一の良い解決策は、「jar」ユーティリティです。そうしないとIDEの機能を使用できません。

+0

「mavenレポートではパッケージが見つかりませんでした」とはどういう意味ですか?どんなコマンドを実行しようとしていますか?メッセージは何ですか?その他の情報はありますか?通常、このようなエラーはコンテキストなしでは表示されません。 –

+0

@ Zac:そうです。それは、問題が欠けている瓶であると私に信じさせたのは、私の未熟なことでした。私は途中で解決しました。あなたの検討のためにTnx。 –

答えて

11

jar tvf filename.jarは、jarファイルの内容を解凍せずに表示します。

しかし、実際にあなたが探しているパッケージを提供しているのは明らかにあなたが見つけていない依存関係の正しい座標を見つけることですそれらの内容をチェックすることはあなたを助けるようではありません)。

私がチェックすることをお勧めするのは、Sonatypeのpublic Nexus instanceです。しかし、your exampleの検索では何も表示されません。通常は、プロジェクトがMaven Centralや他の主要なリポジトリに(大丈夫です)取得しようとしていないので、Web検索に頼らざるを得ません。通常、パッケージの最初の2つのセクションでは、どこに見えるかを教えてくれます(あなたの場合はopenanzo.org)。

1

.jarファイルはZIP圧縮されたアーカイブにすぎません。名前をzipに変更し、お気に入りの解凍プログラムで開き、ディレクトリをたどります。

eclipseプロジェクトにjarファイルを追加すると、プロジェクトエクスプローラのlibをたどることができます。あなたは、LinuxやMac上にある場合、あなたはあなたのJARおよびタイプを含むフォルダのルートにターミナルに行くことができる

HTH

9

# grep -ri "org.openanzo.client.jena" * 

それはの再帰的なリストを返します。そのパッケージ名を含むすべてのJARファイル結果が0の場合、それらのJARSにはそのパッケージが含まれていません。

さらに詳細な検索を行う場合は、JARファイルのJARファイルをアンジャックすることができます。ディレクトリ構造と.classファイルは、パッケージ内のフォルダで整理されます。

# jar xvf filename.jar 

は、Windows上にある場合、あなたは、このような7Zipなどのツールを使用してJARファイルをunjarしすることができます。

+1

Windowsの場合、cygwinとlinux grepを使うことができます:) – MartinC

0

mavenがjarファイルをダウンロードしたと仮定すると、ファイルはローカルリポジトリにロードされます。 Eclipseでパッケージ化されたMavenブラウザを使用して、リポジトリ内の成果物をブラウズして検索することができます(通常userdir/.m2/repository内)

注:必要に応じてリポジトリを直接閲覧できます。あなたはダウンロードされたパッケージを理解するでしょう。しかし、私はプラグインの使用をお勧めします。

Intellij IDEAを使用している場合、各プロジェクトには外部ライブラリと呼ばれるツリーがあり、ライブラリを検索して探索できます。

2

@Carsten .jarファイルの名前を.zipに変更する必要はありません。jarファイルをwinzip /または他のzipユーティリティー(Windows OSと仮定)で直接開くことができます。

@ ashy_32bit IBMから "jar class finder" eclipseプラグインを使用してみてください。クラスを見つけるための単純なプラグイン(あなたはクラス名を知っていれば)

ORカーステンは... LIBファイルとしてjarファイルを設定し、手動で

OR

をそれを見て示唆したように

作成(あなたが直接、単一のフォルダの下にすべてのjarファイルを持っている場合)a.batと呼ばれ、以下の4行

@ECHO OFF 
dir /b *.jar > allJarFilesList.txt 
FOR /F %%A IN (allJarFilesList.txt) DO jar -tf %%A > list_of_packages.txt 
FOR %%B IN (list_of_packages.txt) DO FIND /I "com/sun" %%B 

NOTE「の共同を貼り付け、バッチファイル最後の行で "m/sun"と表示されます。それはハードコーディングされていますが、あなたも引数として渡すことができます...

これは非常に基本的な形式であり、ディレクトリ。

これは役に立ちます:-)

関連する問題