他のjarファイルに依存しているJavaプログラムをmaven2で実行可能なjarファイルにまとめたいと思っています。dependencyタグの設定で依存性を指定してやることでmvn compileは成功するようになりました。しかしmvn packageでjarファイルを作っても実行時にクラス定義を見つけられずエラーになります。どうすればよいでしょうか?

回答の条件
  • 1人2回まで
  • 登録:2006/09/13 22:39:59
  • 終了:2006/09/14 15:49:11

回答(2件)

id:F57PB No.1

F57PB回答回数86ベストアンサー獲得回数02006/09/13 23:02:48

ポイント20pt

まずは、「他のjarファイルに依存しているjarモジュールを実行するにはどうすれば良いか?」をご存知でしょうか?

ご存じなければ、Maven以前にそこを押さえるのが先だと思います。

(と言うか、アプリケーションの実行にMavenはあまり関係ないと思います)


要は依存する他のjarファイルをクラスパスに通せば良いわけですが、

クラスパスの設定方法にはいくつかの方法があります。

代表的な方法としては、以下の3つがすぐに思いつきます。

○CLASSPATH環境変数に追加する。

○実行時に、java -cpで指定する。

○JarファイルのマニフェストのClass-Pathで指定する。


これらの方法で、依存しているjarファイルをクラスパスに通せば動作するはずです。

id:westfish

長くなるので質問文には書きませんでしたが、以前はAntで作っていました。その時はzipfilesetタグを用いていました。maven2.0で同じことをする方法が知りたかったのですが、全く同じでなくとも目的が果たせればよかったのでこのような質問になりました。

2006/09/13 23:56:40
id:ksaito11 No.2

ksaito11回答回数44ベストアンサー獲得回数42006/09/13 23:15:58

ポイント50pt

mvn package で作成したjarファイルにはdependencyタグで指定したjarファイル(以下、外部jarとします)は含まれません。

これらの外部jarは、実行時に環境変数のCLASSPATHで指定するかjavaコマンドの-classpathで指定する必要があります。

他には、jarファイルのマニフェストのにClass-Path:で相対パスで外部jarを指定することもできます。

http://java.sun.com/j2se/1.5.0/ja/docs/ja/guide/jar/jar.html#Man...

packageでwarファイルが作成される場合はdependencyのscopeにruntimeを指定するとwarファイルのWEB-INF/libに一緒にパッケージされます。

http://maven.apache.org/guides/introduction/introduction-to-depe...

id:westfish

ユーザーのことを考えるとなるべくインストールが簡単な物になることが好ましいので、以前はそれらのJarも含めて一つのJarにまとめていました。

2006/09/14 03:47:53
  • id:westfish
    お二人の回答を参考に検索していたところ、
    maven2でクラスパスを指定する方法が
    http://d.hatena.ne.jp/Syunpei/20060706/1152202170
    に書かれていました。<addClasspath>true</addClasspath>と書き足してmvn packageしたところきちんとClass-Pathが指定されました。
  • id:ksaito11
    addClasspathタグは知りませんでした。
    勉強になりました!

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません