Android、Java、Web系、Linux、マラソン等の備忘録

2012/01/13

Eclipse系IDEのプロジェクトに手持ちの依存するライブラリ(JARファイル)を 追加

0 件のコメント

ある外部JARファイルをビルドパスに追加してそのJARファイルのクラスを使う処理を記述後、サーバを動かしてみると以下のようなエラーが。

org.springframework.web.util.NestedServletException: Handler processing failed; nested exception is java.lang.NoClassDefFoundError: org/apache/thrift/transport/THttpClient


ビルドパスへ追加してコンパイル通ってるのに。。
と思っていましたが、mavenプロジェクトなので、そちらへ追加が必要のようです。



環境




・SpringSourceの公式サンプルをSTS上のサーバで実行する | とびこみ日記
http://takaiwa.net/archives/1029




この回で追加したmvc-basicとかmvc-ajaxの環境



[追加したいJARファイル]
・libthrift-1.0-SNAPSHOT.jar



プロジェクトの依存するライブラリを追加



Springsource tool suite(EclipseベースのIDE。以下STS)のプロジェクト上で右クリックし、[Maven] –> [Add Dependency]を選択。JARファイルのキーワード”thrift”と入力してみるも、検索にヒットしない。( ゚Д゚)?



WS000369
※画像はEclipse IDE for Java Developersのものです



セントラルリポジトリに存在しないのでダウンロードできないとの事。手動でローカル(ローカルリポジトリ)へ追加する必要がるものの、EclipseベースのIDEでGUI操作により追加する方法を探すも、見つからない。。



どうやらコマンドで入れろ的な事なので、しぶしぶコマンドで追加しました。




[参考]



・Eclipse 3.4.2とm2eclipseでMavenを使ったJavaのライブラリ管理 - public static void main
http://d.hatena.ne.jp/Kishi/20090228/1235813480





・Guide to installing 3rd party JARs
http://maven.apache.org/guides/mini/guide-3rd-party-jars-local.html




mvn install:install-file -Dfile=<path-to-file> -DgroupId=<group-id> \
-DartifactId=<artifact-id> -Dversion=<version> -Dpackaging=<packaging>


STSは入れたけど、mavenなんか入れてないぜ。。どこでコマンド打つんだとSTSのインストールディレクトリを探してたら、mvnがありました。



こんな感じのディレクトリ



D:\apl\springsource-tool-suite-2.8.1.RELEASE-e3.7.1-win32-x86_64\springsource\apache-maven-3.0.3\bin


コマンドプロンプトを起動して、cdコマンドで上記ディレクトリまで移動し、mvn install~のコマンドを実行すると、見事ローカルリポジトリへコピーされました。



D:\apl\springsource-tool-suite-2.8.1.RELEASE-e3.7.1-win32-x86_64\springsource\ap
ache-maven-3.0.3\bin>mvn install:install-file -Dfile="D:\lib\libthrift-1.0-SNAPSHOT.jar" -DgroupId=
org.apache.thrift -DartifactId=thrift -Dversion=1.0 -Dpackaging=jar
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building Maven Stub Project (No POM) 1
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-install-plugin:2.3.1:install-file (default-cli) @ standalone-po
m ---
[INFO] Installing D:\lib\libthrift-1.0-SNAPSHOT.jar to C:\Users\prog\.m2\repository\org\apache\thrift\thrift\1.0\thrift-1.0.jar
[INFO] Installing C:\Users\prog\AppData\Local\Temp\mvninstall6141724568259733641
.pom to C:\Users\prog\.m2\repository\org\apache\thrift\thrift\1.0\thrift-1.0.pom

[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1.704s
[INFO] Finished at: Fri Jan 13 00:03:59 JST 2012
[INFO] Final Memory: 3M/122M
[INFO] ------------------------------------------------------------------------


この時グループIDの記述が気に入らなかったので、mvnでinstallコマンド打てるのならアンインストールもできるだろと思ってましたが、ググれどググれど見つからず。。
(正確にはよくわからず。。)



エクスプローラでローカルリポジトリの場所まで行って直接Deleteしました。(上記コマンドは気に入る版です)
このままでは、STS上でAdd Dependencyをしても見つけてくれないので、認識してもらう作業を。
STS上のメニュー[Window] – [Show view] – [Other..]とたどります。その中にMavenのビューがあるので、選択して



WS000366




OKボタン押下。
Maven Repositoriesビューが表示されるので、



WS000367





ローカルリポジトリの所で、右クリック[Rebuild Index]を選択。



リビルドが始まるので少々待ちます。


WS000368



リビルドが終わると、


WS000370



先ほど追加したものが表示されてます。これをもって、プロジェクト上で、、[Maven] –> [Add Dependency]を選択し、”thrift”と入力すると



WS000371



見つける事ができました。これでOKボタンを押下し、冒頭で述べたサーバを起動させると「java.lang.NoClassDefFoundError」と言われる事なく動作させることができました。



Maven関連書籍,SpringによるWebアプリケーションスーパーサンプル 第2版

0 件のコメント :

コメントを投稿