- - PR -
コンパイルエラーについて
1
| 投稿者 | 投稿内容 | ||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2004-06-17 03:22
はじめまして。
Java初心者なので、とても初歩的な質問になると思いますが...。 教えて下さい。 下記のようにコンパイルするとエラーになってしまいます。 多分、コンパイル方法に問題があると思うのですが...。 C:\Tomcat5\webapps\no\WEB-INF>javac -d classes -classpath c:\tomcat5\common\li b\servlet-api.jar src\jspbean\EmployeeDAO.java src\jspbean\EmployeeDAO.java:62: シンボルを解決できません。 シンボル: クラス Employee 場所 : jspbean.EmployeeDAO の クラス public void create(Employee emp){ ^ src\jspbean\EmployeeDAO.java:83: シンボルを解決できません。 シンボル: クラス Employee 場所 : jspbean.EmployeeDAO の クラス public int store(Employee emp){ ^ src\jspbean\EmployeeDAO.java:48: シンボルを解決できません。 シンボル: クラス Employee 場所 : jspbean.EmployeeDAO の クラス list.add(new Employee(number, name, age, depID, depName)); ^ エラー 3 個
長くなってしまってすみません。 入門書,サイトで調べてみたんですが、わかりませんでした。 以上、よろしくお願いいたします。 | ||||||||||||||||||||
|
投稿日時: 2004-06-17 08:30
クラスパスが悪いせいだと思います。
-classpath .;c:\tomcat5\common\lib\servlet-api.jar でコンパイルしてみてください。 ちなみにこのソースならクラスパスは要らないのでは? | ||||||||||||||||||||
|
投稿日時: 2004-06-17 11:55
返信ありがとうございます。
下記のようにコンパイルしてみましたが、同じようにエラーになりました。 C:\Tomcat5\webapps\no\WEB-INF>javac -d classes -classpath .;c:\tomcat5\common\ lib\servlet-api.jar src\jspbean\EmployeeDAO.java このソースににクラスパスが要らないのは、何故ですか? | ||||||||||||||||||||
|
投稿日時: 2004-06-17 12:08
「シンボルを解決できません。」というのは、「Employee」がなんのことか
コンパイラが判断できなかったということです。 コンパイル時に他のクラスを参照する場合、クラスパスにルートディレクトリ (パッケージの先頭のディレクトリの存在するディレクトリ)が含まれている 必要があります。今クラスパスが通っているディレクトリは、「.」が表すカレントの C:\Tomcat5\webapps\no\WEB-INF\ だけですが、Employeeクラスは以下の場所に存在していますか? C:\Tomcat5\webapps\no\WEB-INF\jspbean\Employee.class
ぼんじいさんではありませんが、ServletAPIを使用していないので、クラスパスに servlet-api.jarを含めなくても良いということではないかと思います。 # 微妙に修正 [ メッセージ編集済み 編集者: taro 編集日時 2004-06-17 12:12 ] | ||||||||||||||||||||
|
投稿日時: 2004-06-17 12:39
エラーから判断するにEmployeeが無いからコンパイルできない
のだからまずEmployeeをコンパイルしているのでしょうか? あとクラスパスの指定も”.”を追加していますが ".\classes"じゃないでしょうか? どちらにしてもEmployeeとEmployeeDAOを一緒にコンパイルすれば 解決すると思うんですが、、 下記のような感じで試してみてください。 C:\Tomcat5\webapps\no\WEB-INF>javac -d classes -classpath .\classes;c:\tomcat5\common\ lib\servlet-api.jar src\jspbean\*.java | ||||||||||||||||||||
|
投稿日時: 2004-06-17 12:57
taroさん,いっきゅうさんありがとうございます。
その通りだと思っていましたが、解決法がわかりませんでした...。 Employeeクラスは C:\Tomcat5\webapps\no\WEB-INF\classes\jspbean\Employee.class にあります。 とりあえず C:\Tomcat5\webapps\no\WEB-INF>javac -d classes -classpath .\classes;c:\tomcat5\common\lib\servlet-api.jar src\jspbean\*.java でコンパイルできました。ありがとうございました。
何故必要なのですか?
どれがServletAPIを使用するのか理解ができていなくて...。 [ メッセージ編集済み 編集者: みるく 編集日時 2004-06-17 13:03 ] | ||||||||||||||||||||
|
投稿日時: 2004-06-17 13:52
分かっていることだったらすみません。 Employeeクラスにクラスパスが通っていないからコンパイルエラーが起きていたわけですよね。
ので、Employeeクラスのルートである C:\Tomcat5\webapps\no\WEB-INF\classes にクラスパスが通っている必要があるのです。 これをコンパイル時のカレントディレクトリからの相対パスで表すと./classになります。 (絶対パス、相対パスはどちらを使ってもOKです)
以下がServletAPIです。tomcatでの実行時にはパスが通っているので、 コンパイル時にも含めることは正しいと思いますが。 (ぼんじいさんのコメントの自分なりの解釈ですので、間違ってたらごめんなさい) http://www.ingrid.org/jajakarta/servletapi/servletapi-4.0/docs-ja/ | ||||||||||||||||||||
|
投稿日時: 2004-06-17 14:12
ありがとうございました。
これですっきりしました。 この問題が解決できないとこの先大変だと思っていたので...。 | ||||||||||||||||||||
1
