質問: windows2000上でJ2SDK1.4の環境で自作のPackageが利用できなくなりました。 以前、入門書の習作を参考にして作成したパッケージを利用して稼動しているクラスを少々手直ししようとして、何年かぶりに再コンパイルしてみると、パッケージをimportする個所でパッケージが存在しないというエラーが出ます。 コンパイル前に別の場所に保管しておいたclass(以前コンパイルしていたもの)を元にもどすと正常に稼動しますので実行環境は問題ないようです。問題を簡単にする為に、以前参考にした習作を再度作成してみましたがやはりうまくいきません。習作の概要は次の通りです。 e:\workをカレント・ディレクトリとしてpackage myJava;で始まるBook.javaというソースでpublicなクラスBookを定義します。コンパイルしたBook.classはe:\work\myJavaに配置します。DemoPackage.javaはそのPackageをimport myJava.*;でインポートし、Bookクラスのインスタンスを作成して使用します。e:\work上でDemoPackage.classのコンパイルを試みます。(Book.javaもBook.classもe:\workには存在しないことを確認済です)この状態で、 import myJava.*;の個所で パッケージmyJavaは存在しません。のエラーが出てコンパイルできません。以前、同じ理解でこの習作は正常に作成できたような気がするのですが、私の勘違いでしょうか? 以前と変わったことは、因果関係は考えにくいのですが、J2SDKのバージョンが1.2または1.3だったのが、現在は1.4を使用している点くらいです。習作本は「Java超入門」Kris Jamsa/ASCIIです。(1999年頃購入) もしお気付きの点等ありましたら、よろしければお教え下さい。
回答: ご教示ありがとうございます。ご指摘通りでうまくいきました。実は似たことは試しておりましたが、カレントディレクトリではなくPackageを配置したmyJavaを指定していたのがいけなかったようです。 ちなみに、本来の目的のソースはhogehoge.java(仮名)というサーブレットでした。その為servlet.jar等にもclasspathを通す必要から、環境変数を使用してのコンパイルを試しておりました。しかし、この方法だとうまく行きません。(カレントディレクトリもフルパス名で環境変数classpathの末尾に加えてみましたがやはりうまくいきません。) ご指摘通りコマンド・ラインで-classpathオプションを使用するとうまくいきます。ちなみにパス名が長い時はMS-DOS形式のパス名(スペースの無いやつ)でないと不可でした。Tomcatを使用しているのですが省略時のフォルダにインストールした為servlet.jarがやたら深いところにあります。そんな訳で結局下記のようやるとコンパイルが通ります。 javac -classpath C:\Progra~1\Apache~1\Tomcat~1.1\common\lib\servlet.jar;. hogehoge.java (上折り返しは連続しています) ところで、以前同じソースでコンパイルした時は特にこのようにしなくてもpackageを配置後 javac hogehoge.java だけで通ったような気はするのですが...? しかし、おかげさまで、本来の作業に入れます。大変感謝しております。どうもありがとうございました。お礼とご報告まで。