電子書籍の厳選無料作品が豊富!

実行可能なjarファイルを実行するさいに標準実行環境に含まれていない外部jarファイルが必要になる場合はどのようにその外部jarを指定するのでしょうか?
単純にCLASSPATHにそのjarのディレクトリかjarそのものを指定するだけだと思ったのですが、それだとNoClassDefFoundErrorが発生してしまいます。
実行前にコマンドプロンプト(WinXPです)でSETでやはりクラスパスに追加しても効果なしで…

EclipseでClassファイルからそのJARをビルドパスに含めて実行する場合はちゃんと実行できています。
また、実行JARファイルに外部JARの中身を一緒に入れてJARを生成するとちゃんと実行できます。

よろしくお願いします。

A 回答 (5件)

どうやら、環境変数から変えるのは無理みたいですね。


JDKのドキュメントで, java -jarの説明を読むと、
「このオプションを使用すると、指定した JAR ファイルがすべてのユーザクラスのソースになり、ユーザクラスパスのほかの設定は無視されます。」(When you use this option, the JAR file is the source of all user classes, and other user class path settings are ignored.)
と書いてあるので、環境変数も -cpオプションも効かないのでは?

参考URL:http://java.sun.com/j2se/1.5.0/ja/docs/ja/tooldo …
    • good
    • 0
この回答へのお礼

そのようですね
・素直に一緒のjarにまとめる
・マニフェストに書く
・実行JREのextに入れる
しかないようですね

ありがとうございました

お礼日時:2009/01/07 16:55

Sun のチュートリアルに、やり方が詳しく載ってました。


jarファイルをつくるときに、マニフェストファイルを設定するとうまくいきます。マニフェストファイルは単なるテキストファイルで、エントリポイントとクラスパスを記入します。以下の例では、mainパッケージ内のMain.classからdataパッケージのDataA.class, DataB.class等を利用することを考えます。カレントディレクトリにmainとdataのディレクトリがあるものとします。

1. dataパッケージからfoo.jarというjarファイルをつくる。
jar cvf foo.jar data/*.class
2. つぎにマニフェストファイルとして、以下のテキストファイルmanifest.txtを作成。
Main-Class: main.Main
Class-Path: foo.jar
最後は必ず改行を入れます。エンコーディングはUTF-8でないとうまくいかないらしいです。
3. mainパッケージからbar.jarというjarファイルを作成。
jar cvfm bar.jar manifest.txt main/*.class
4. 最後にbar.jarファイルを実行。
java -jar bar.jar

チュートリアルの中の特に、"Setting an Application's Entry Point", "Adding Classes to the JAR File's Classpath"の項目を読んでみてください。

参考URL:http://java.sun.com/docs/books/tutorial/deployme …

この回答への補足

ありがとうございます
しかしマニフェストを設定するのは前からできていました
マニフェストでClass-Pathを設定することなく環境設定の変更で対応したいのですが、その方法はありませんか?
ご存知でしたらお願いします

補足日時:2009/01/05 18:07
    • good
    • 0

CLASSPATHを通す場合は . ←にも通さないと実行したクラスファイルのメインメソッドを探し当てられません。


これを入れればたぶんコンソールでも実行できると思います。


CLASSPATH = .;○○.jar
    • good
    • 0

java -classpath jarファイル 実行javaファイル

この回答への補足

失敗

補足日時:2008/12/30 19:23
    • good
    • 0

>実行前にコマンドプロンプト(WinXPです)でSET



その設定方法では、コマンドプロンプト起動中しか有効にならなかったかと思ったけど。
set 発行直後に、コマンドプロンプトから java.exe -jar file.jar などとして実行できるか試してみて下さい。

jarダブルクリックでも有効な設定をするにはマイコンビューターのプロパティで、環境変数CLASSPATHを編集してみて下さい。

この回答への補足

>実行前にコマンドプロンプト(WinXPです)でSET
これはコマンドプロンプトでの起動の場合です
なので結果は前言どおり起動しません
環境変数設定ファイルを直接編集しても結果は同じです

補足日時:2008/12/29 17:20
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!