- ベストアンサー
Package内のクラスを利用する
最近、javaのプログラムを学びはじめたものです。 自分で作成したクラスをpackageにまとめてそれを 他のプログラムで呼び出すにはどうすればよいか分からず importやクラスパスを使ってみたのですがエラーが出てしまいます。 このやり方についての参考になるサイトや方法などお知りでしたら 教えてください。よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
#1です。 java標準ではないクラス(独自で作成したクラスなど)を使用する場合、 そのクラスがどこに存在するのか教えてやらなければなりません。 そりゃそうですよね。number3-33さんが作成したものなんて javaが知る由もありませんから。 使用するjavaクラス(ライブラリ)を指定する方法は次の二通りあります。 1.コマンドのオプションに「-classpath」を指定する。 2.環境変数「CLASSPATH」に使用するクラス(ライブラリ)のパスを指定する。 余談ですが、上記1や2の行為を「クラスパスを通す」とか「クラスパスをきる」と言います。 ※例)質問者さんの場合、「ExPackage3クラスを実行(あるいはコンパイル)するには、ExPackage2クラスのクラスパスを通す必要がある」といった使い方をします。 質問者さんの場合、「呼び出すほうのプログラム」の前に 「呼び出したいプログラム」をまずコンパイルし、 その後、作成された「呼び出したいプログラムのクラスファイル」をクラスパスに指定して 「呼び出すほうのプログラム」をコンパイルする必要があります。 例えば、もしExPackage2.javaとExPackage3.javaが同一フォルダにある場合、 カレントディレクトリをそれらファイルの存在するフォルダにまで移動し、次のようにタイプします。 >javac ExPackage2.java >javac -classpath . ExPackage3.java 一つ目のコマンドを実行すると、カレントディレクトリにExPackage2.classファイルが作成されるはずです。 二つ目のコマンドの「.」はカレントディレクトリを表します。 すなわち、クラスパスにカレントディレクトリを通すということです。 長々と書きましたが、ご参考とされているサイトにも クラスパスについて解説があるようです。 http://www.javaroad.jp/java_basic2.htm
その他の回答 (1)
- OKbokuzyo
- ベストアンサー率43% (130/296)
もっと詳細に記載したらどうですか?教えてもらうにしては少し怠惰な態度だと思いませんか? 何をどのようにしようとしたら、どんなエラーが出たのか記載してください。 1.エラーの内容を記載してください。 2.javacコマンドやjavaコマンドの利用でつまづいているのなら、 そのとき実行したコマンドラインを記載してください。 3.可能ならば必要最低限のソースを記載してください。 最も重要なのは1です。 初心者のあなたにはエラーを見てもさっぱりでも、それが最も良い情報なのです。 ただ「なんかエラーが出てます。教えてください」では教える方も何を教えたらよいかわかりませんよ。
補足
すいません、内容がほとんどない質問でした。詳細を書き直します。 まず、次のサイトを参考にしました。 http://www.javaroad.jp/java_package2.htm 「呼び出したいクラスのプログラム」 package pack; public class ExPackage2 { public void showClass() { System.out.println("クラスExPackage2です。"); } } 「呼び出すほうのプログラム」 package packB; import pack.ExPackage2; public class ExPackage3 { public static void main(String[] args) { ExPackage2 ex = new ExPackage2(); ex.showClass(); } } この「呼び出すほうのプログラム」をjavacでコンパイルしたところ 次のようなエラーが出ました。 $ javac ExPackage3.java ExPackage3.java:3: パッケージ pack は存在しません。 import pack.ExPackage2; ^ ExPackage3.java:7: シンボルを見つけられません。 シンボル: クラス ExPackage2 場所 : packB.ExPackage3 の クラス ExPackage2 ex = new ExPackage2(); ^ ExPackage3.java:7: シンボルを見つけられません。 シンボル: クラス ExPackage2 場所 : packB.ExPackage3 の クラス ExPackage2 ex = new ExPackage2(); ^ エラー 3 個 よろしくお願いします。
お礼
お返事ありがとうございました。 教えていただいた「2.環境変数「CLASSPATH」に使用するクラス(ライブラリ)のパスを指定する。」で指定してやったところ無事にコンパイルと実行ができました。