スキップしてメイン コンテンツに移動

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

ある外部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版

コメント

このブログの人気の投稿

Javaでprivateなfieldやmethodにアクセスする

JUnitでテストしてると、privateなフィールドにアクセスして、値を参照したりセットしたりしたくなるわけですが、よく使うのでメモしておきます。 例えば、次のような対象のクラスがあるとします。 public class ParentClass { private String hoge = "ParentClass!!"; public void dispMsg() { System.out.println("dispMsg:" + hoge); } private void privateDispMsg(String msg) { System.out.println("dispMsg:" + msg); } }

GolangでWindows GUIアプリケーション

GUIアプリ作成の前提 社内ツールとしてexeで配布 開発環境はGoLandを使う 社内ツールとしてexeを配布ということであれば、Visual StudioでC#による開発だと思います。しかしながら、Go言語を習得したいのと、GoLandの補完機能が便利で、Android Studio使っていたこともあり、とっつきやすいという点からGo縛りでGUIアプリケーションを考えたいと思います。 lxn/walk Windows application library kit for Go. Windows向けしか考えていないので、まずこのライブラリなのですが、ボタンやコンボボックスが思ったように並ばなかったり、手軽にイメージボタンを配置したりなど、簡単にレイアウトを変更できない課題に直面しました。レイアウト作成だけで時間を取られてしまいます。そう言えば、Androidアプリ開発のときは、XMLでデザイン部分を切り離してたのを思い出して、今回の調査の運びとなりました。 fyne-io/fyne Cross platform native GUIs designed for Go based on Material Design. Supports: Linux, macOS, Windows, BSD, iOS and Android. walkと比べると、クロスプラットフォームで作成できるのですが、こちらもコードの中にデザインを書いていく形でした。 therecipe/qt therecipe/qt allows you to write Qt applications entirely in Go or JavaScript. Qt Creatorなるものがあるようで、デザイン部分を切り離せる印象はあるものの、最新のPCでもビルドに時間がかかるようで、学習コストもかかるという記事を見かけて断念しました。 どうしたものかとツイートしましたら、下記のようにご助言をいただいた。 同じ課題に対し色々試した結果、PWAのフルキャッシュドに落ち着いた。中身はGo+WASMで。 https://t.co/e60whDTV16 — のぼのぼ📡 (@nobonobo) July 21, 2020 PWA 早速調べてみました。Googleが進めているプロジェクトで、ネイティブアプリのよ

Eclipseの高速化メモ

Eclipseが重いと一言に言っても、いろいろな工程での話があると思いますが、過去記事のなども含めてこの記事にピックアップしておきたいと思います。以下はWindows環境での話です。