レポ
クラウドで
伸びる人沈む人

連絡特定商取引将来設計運営方針&メルマガSEの彼女は?
成功レポート集 Fedora9インストール! EclipseでJava Oracleバックアップのアーキテクチャ ゼロからHPでCGI 便利ネット知識
無料レポ&講習 IT業界の実態 linux処方箋 Java処方箋 Oracle処方箋 Perl処方箋
クラスパスはどこに通るのか?本当に理解しておこう

<IT技術の処方箋:クラスパスはどこに通るのか?本当に理解しておこう>



コマンドラインからクラスパスを実行した場合、
どこにクラスパスが通るのか?

そういう話をきっちりしておきましょう。


例えば、
c:\tmpには、以下の二つのファイルがあって、

Sample.class
mysql-connector-java-5.1.7-bin.jar(mysqlのドライバ)


Sampleを実行するためには、
mysql-connector-java-5.1.7-bin.jarファイルが必要
(つまり、クラスパスを通す必要があったとします)

そういう関係だったとしましょう。


よくやってしまう間違いが二つあります。


●一つ目の間違い

C:\tmp>java -classpath . Sample
java.lang.ClassNotFoundException: com.mysql.jdbc.Driver

カレントにクラスファイルも、jarファイルもあるんだから、
これでいいだろ?

と思われるかもしれませんが、
クラスパスでカレントを指定した場合は、
クラスファイルにしかクラスパスが通りませんからね。
jarファイルは、きっちり指定する必要があります。

●二つ目の間違い

じゃあ、ってんで、↓のようにやると、
C:\tmp>java -classpath ./mysql-connector-java-5.1.7-bin.jar Sample

Exception in thread "main" java.lang.NoClassDefFoundError: Sample

またエラーがでます。
これだと、
カレントのクラスファイルにクラスパスが通らない。

「カレントには環境変数でクラスパスを通してあるよ」
と思うかもしれませんが、

java -classpath ホニャララ

とやってしまった時点で、
環境変数のクラスパスはご破算になりますからね。

●だから、正しくは、
java -classpath .;./mysql-connector-java-5.1.7-bin.jar Sample

みたいに、
カレントのクラスファイル(Sample.class)
と、
カレントのjarファイル(mysql-connector-java-5.1.7-bin.jar)

にきっちりとクラスパスを通す必要があります。



さらに補講教材があります。
以下をクリックしてください。

新人用Java勉強環境の準備

Servlet初心者が勘違いする「典型的な間違い」

クラウドで伸びる人沈む人 ||Copyright © 2005-2020 SearchMan,All Rights Reserved.