- - PR -
メソッドを他のクラスから呼び出びだせない
1
| 投稿者 | 投稿内容 |
|---|---|
|
投稿日時: 2002-06-01 16:17
c:\jwork\abc
に下記のファイル Class01.java と Class02.java を保存し、コンパイルを行います。 c:\jwork> javac abc\Class02.java ← コンパイルできます c:\jwork> javac abc\Class01.java abc\Class01.java:11: シンボルを解釈処理できません。 シンボル: 変数 Class02 位置 : abc.Class01 の クラス out.println(Class02.returnString()); ^ エラー 1 個 というエラーになってしまいます。他のクラスのメソッドを呼び出すことは可能だと 思いますが、なぜエラーになってしまうのでしょうか。ご存知の方がいらっしゃいま したら教えていただければ幸いです。 環境は Window2000 J2sdk1.4.0 tomcat-3.3.1 です。宜しくお願いいたします。 <Class01.java> package abc; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class Class01 extends HttpServlet { public void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException { PrintWriter out = response.getWriter(); out.println(Class02.returnString()); } } <Class02.java> package abc; public class Class02 { public static String returnString () { return("Hello World"); } } |
|
投稿日時: 2002-06-01 16:34
javac abc\*.java
では駄目ですか? [ メッセージ編集済み 編集者: H2 編集日時 2002-06-01 16:34 ] |
|
投稿日時: 2002-06-01 16:45
ちょっと簡単に説明しますね。
問題点: c:\jwork> javac abc\Class02.java では、abcディレクトリにClass02.classが作成されます。 c:\jwork> javac abc\Class01.java 時には、Class01から参照するClass02が必要なのですが、クラスパスにはClass02への参照が含まれていません。そのため、「シンボルを解釈処理できません」というメッセージが出るわけです。 解決策: @c:\jwork> javac abc\*.java コンパイラが自動的にabcディレクトリ内を調べてくれるでクラスが見つからないということは起きない。 A c:\jwork> javac abc\Class02.java c:\jwork> javac -classpath ".\;他のクラスパス" abc\Class01.java とすれば、.(カレントディレクトリ)からabc.Class02を見つけてくれます。 詳しいことは、参考書のClasspathに関する項目を調べてください。 あと、antのようなビルドツールを使うのもいいですよ。 [ メッセージ編集済み 編集者: H2 編集日時 2002-06-01 16:46 ] |
|
投稿日時: 2002-06-01 17:07
javac abc\*.java
でコンパイルが通りました。 私がやった方法では無理なことも理解できました。 H2さん、どうもありがとうございました。 antについても時間があるときに試してみたいと思います。 |
1
