下記のURLに関係するのだが、2つ以上の関係するjavaファイルが同一のパッケージに入っていない場合。
http://javatokinyu.blogspot.com/2009/12/java-java.html
親javaソース -> TestBeansWrite.java :main関数が定義されている
子javaソース -> RectangleBeans.java :親javaソースがあるディレクトリに、「beanstest」フォルダが存在し、その中に保存されている。
つまり、TestBeansWrite.javaの1行目に、「import beanstest.*」と記載があるということ。
この関係においても、コンパイル:javacするのは、呼側のソースファイル:TestBeansWrite.javaだけでよい。
但し、TestBeansWrite.javaと、beanstestフォルダは同じフォルダ(ディレクトリ)に存在する必要がある。
得たこと:
import宣言は、javacを実行した際に関係する他のjavaソースファイルの「ありかを標す」と言っても良い存在である。

カスタム検索
2009年12月6日日曜日
[Java] 親子関係のある2つのJavaソースファイル群のコンパイル: エラー「シンボルを見つけられません」
次の関係をもつ2つのJavaソースを「javac」にてコンパイルしたが、
<シンボルを見つけられません>とのエラーが。。。
LTCInfoWithBeansServlet.java -> servletクラスファイルで、次のクラスを呼んでいる
LTCInfoQueryBeans.java -> 上記servletクラスにて、インスタンス化されている

解決方法:
コンパイルする際は、「LTCInfoWithBeansServlet.java 」をコンパイル宣言するだけでよい。
つまり、「LTCInfoQueryBeans.java」を明示的にコンパイルする必要はない。
servletクラスをコンパイルする際は、次のように実行する。
「G:\study\Web Application\LTCInfoWithBean\src>javac -classpath ".;F:\Program Files\Apache Software Foundation\Tomcat 5.5\common\lib\servlet-api.jar" ltcinfo\LTCInfoWithBeansServlet.java」
ポイントは、classpathにて「""」で囲まれた文にて、「.;」を先頭につけることを忘れないこと。
得たこと:
やはり、わざわざ呼ばれる方の.javaをそれぞれコンパイルする必要はない。
親というか呼ぶ方の.javaをコンパイルすると、javacにて、子供というか呼ばれる方の.java達もコンパイルされる。
但し、この自動子供ファイルコンパイルとは関係ないが、-classpathにて必要なjarファイルを宣言する際に、カレントディレクトリ「.」をくれぐれも忘れないように。
<シンボルを見つけられません>とのエラーが。。。
LTCInfoWithBeansServlet.java -> servletクラスファイルで、次のクラスを呼んでいる
LTCInfoQueryBeans.java -> 上記servletクラスにて、インスタンス化されている

解決方法:
コンパイルする際は、「LTCInfoWithBeansServlet.java 」をコンパイル宣言するだけでよい。
つまり、「LTCInfoQueryBeans.java」を明示的にコンパイルする必要はない。
servletクラスをコンパイルする際は、次のように実行する。
「G:\study\Web Application\LTCInfoWithBean\src>javac -classpath ".;F:\Program Files\Apache Software Foundation\Tomcat 5.5\common\lib\servlet-api.jar" ltcinfo\LTCInfoWithBeansServlet.java」
ポイントは、classpathにて「""」で囲まれた文にて、「.;」を先頭につけることを忘れないこと。
得たこと:
やはり、わざわざ呼ばれる方の.javaをそれぞれコンパイルする必要はない。
親というか呼ぶ方の.javaをコンパイルすると、javacにて、子供というか呼ばれる方の.java達もコンパイルされる。
但し、この自動子供ファイルコンパイルとは関係ないが、-classpathにて必要なjarファイルを宣言する際に、カレントディレクトリ「.」をくれぐれも忘れないように。
登録:
投稿 (Atom)