- - PR -
「シンボルを解釈処理できません」エラーについて
1
| 投稿者 | 投稿内容 | ||||
|---|---|---|---|---|---|
|
投稿日時: 2003-09-14 23:44
こんにちは。Javaについては初心者ですが、練習でメモ帳でJavaのコードを書いています。そこで起こった問題が解決できずに困っています。問題というのは、2つのプログラムで、同じステートメントが書かれており、(Enumeration enmNam = request.getParameterNames(); 厳密にはまったく同じではなく、enmNamという変数名は異なります。)また、両者は同じライブラリーをimportしているにもかかわらず、(javax.servlet.*, javax.servlet.http.*, java.io.*, java.lang.*, java.util.*)
片方のプログラムがコンパイル時に以下のエラーメッセージを出します。 -------------------------------------------------------------------------- C:\\j2sdk1.4.0\\bin>javac c:\\temp\\cmptest\\getRequest.java c:\\temp\\cmptest\\getRequest.java:19: シンボルを解釈処理できません。 シンボル: 変数 request 位置 : getRequest の クラス Enumeration enmNam=request.getParameterNames(); ^ -------------------------------------------------------------------------- コンパイル時には両方ともライブラリーの指定は行っていません。どなたかこの原因につきましてご教授いただけないでしょうか。 | ||||
|
投稿日時: 2003-09-14 23:52
エラーメッセージの通りです。
| ||||
|
投稿日時: 2003-09-15 01:07
こんにちは。米山@クロノスです。
Javaにおいて、コンパイル時に「シンボルを解釈処理できません」と表示される理由は非常に単純です。 ふうたさんが「エラーメッセージのとおりです」と書いているように、実際にそのメッセージのとおりなのです。 ただ、それでは初学者にとって少し不親切とも思えるので、少しヒントを書いてみます。 コンパイラはソース・コードに書かれたシンボルを解釈してコンパイル処理を行います。たとえば、次のようなステートメントがあったとします。 int value; このときコンパイラは「int」はデータ型だな、とか「value」は変数名だな、とか解釈して処理を行うのですが、その際にコンパイラが解釈できないシンボルに出会ったとき、まさに「シンボルを解釈処理できません」となってしまうのです。 では、シンボルを解釈できない理由とは何でしょうか? 逆にコンパイラが解釈できるシンボルとは次のようなものです。 ・Javaのキーワード(例:class, public, int, if, for, ...) ・演算子(例:+, -, =, ...) ・クラスパスの通っている場所にある「クラス」および「インターフェイス」 (当然、完全修飾クラス名で記述しないのならimport文が必要) ・あらかじめ宣言された変数 つまり上記に当てはまらないものは、コンパイラは解釈できません。 さて、質問の件ですが、
とあるので、コンパイラは変数「request」が解釈できないと言ってますね。 もう一度コードを良く見て、なぜ「request」という変数を解釈してくれないのか考えてみてください。 [ メッセージ編集済み 編集者: 米山@クロノス 編集日時 2003-09-15 01:08 ] | ||||
|
投稿日時: 2003-09-15 06:32
ご回答ありがとうございました。おっしゃるとおりでした。ありがとうございます。
| ||||
1
