ある外部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”と入力してみるも、検索にヒットしない。( ゚Д゚)?
※画像は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のビューがあるので、選択して
OKボタン押下。
Maven Repositoriesビューが表示されるので、
ローカルリポジトリの所で、右クリック[Rebuild Index]を選択。
リビルドが始まるので少々待ちます。
リビルドが終わると、
先ほど追加したものが表示されてます。これをもって、プロジェクト上で、、[Maven] –> [Add Dependency]を選択し、”thrift”と入力すると
見つける事ができました。これでOKボタンを押下し、冒頭で述べたサーバを起動させると「java.lang.NoClassDefFoundError」と言われる事なく動作させることができました。
Maven関連書籍
コメント
コメントを投稿