
実行可能なjarファイルを実行するさいに標準実行環境に含まれていない外部jarファイルが必要になる場合はどのようにその外部jarを指定するのでしょうか?
単純にCLASSPATHにそのjarのディレクトリかjarそのものを指定するだけだと思ったのですが、それだとNoClassDefFoundErrorが発生してしまいます。
実行前にコマンドプロンプト(WinXPです)でSETでやはりクラスパスに追加しても効果なしで…
EclipseでClassファイルからそのJARをビルドパスに含めて実行する場合はちゃんと実行できています。
また、実行JARファイルに外部JARの中身を一緒に入れてJARを生成するとちゃんと実行できます。
よろしくお願いします。
No.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 …
そのようですね
・素直に一緒のjarにまとめる
・マニフェストに書く
・実行JREのextに入れる
しかないようですね
ありがとうございました
No.4
- 回答日時:
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を設定することなく環境設定の変更で対応したいのですが、その方法はありませんか?
ご存知でしたらお願いします

No.3
- 回答日時:
CLASSPATHを通す場合は . ←にも通さないと実行したクラスファイルのメインメソッドを探し当てられません。
これを入れればたぶんコンソールでも実行できると思います。
例
CLASSPATH = .;○○.jar

No.1
- 回答日時:
>実行前にコマンドプロンプト(WinXPです)でSET
その設定方法では、コマンドプロンプト起動中しか有効にならなかったかと思ったけど。
set 発行直後に、コマンドプロンプトから java.exe -jar file.jar などとして実行できるか試してみて下さい。
jarダブルクリックでも有効な設定をするにはマイコンビューターのプロパティで、環境変数CLASSPATHを編集してみて下さい。
この回答への補足
>実行前にコマンドプロンプト(WinXPです)でSET
これはコマンドプロンプトでの起動の場合です
なので結果は前言どおり起動しません
環境変数設定ファイルを直接編集しても結果は同じです
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VisualStudioでC++クラスを追加...
-
classファイルについて
-
ファイルのパスの取得について
-
Eclipse・プロジェクトで、フォ...
-
html上で、バッチやexeファイル...
-
vs codeはオフラインでも使用で...
-
Eclipseのアンインストールの仕方
-
pythonのライブラリについて
-
GUIアプリをコマンドラインで使...
-
eclipseで1ファイルの警告を100...
-
エラー:org.springframeworkが...
-
タグが閉じてないというエラー...
-
HTMLファイルからexeファイルを...
-
Eclipseで、プロジェクト名のと...
-
Javascriptの値をJava(JSP)へ渡...
-
Javaのコンパイル結果が表示さ...
-
Spyder上のPythonでinputが実行...
-
ActivePerlをインストールしよ...
-
Java VM のヒープサイズについて
-
開発初心者です。eclipseでJS...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Eclipse・プロジェクトで、フォ...
-
classファイルについて
-
SVFの設定について:クラスパス...
-
earファイルを展開する方法
-
javaクラスファイルをEclipseで...
-
eclipse でclassesフォルダーが...
-
Eclipse「リフレッシュ」と「ク...
-
ファイルのパスの取得について
-
jdbcドライバのjarファイルにク...
-
【Eclipse】パッケージ・エクス...
-
「main メソッドを持つクラスが...
-
VisualStudioでC++クラスを追加...
-
EclipseでのJSP・Servlet開発に...
-
EclipseでHTTP404エラーが出る。
-
「削除するか、クラスパスの正...
-
java クラスファイルとソースコ...
-
EclipseでのJDBCドライバについて
-
プログラム実行の際に、「ソー...
-
「メイン・マニフェスト属性が...
-
appletviewerが起動しません。
おすすめ情報