- PR -

「シンボルを解釈処理できません」エラーについて

1
投稿者投稿内容
安二郎
会議室デビュー日: 2003/09/14
投稿数: 2
投稿日時: 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();
^
--------------------------------------------------------------------------
コンパイル時には両方ともライブラリーの指定は行っていません。どなたかこの原因につきましてご教授いただけないでしょうか。
ふうた
大ベテラン
会議室デビュー日: 2001/08/23
投稿数: 198
お住まい・勤務地: 岡山
投稿日時: 2003-09-14 23:52
エラーメッセージの通りです。

引用:

シンボルを解釈処理できません。
シンボル: 変数 request

米山@クロノス
大ベテラン
会議室デビュー日: 2003/06/10
投稿数: 103
お住まい・勤務地: 大阪市淀川区西中島4-13-22 新大阪淀川ビル5F
投稿日時: 2003-09-15 01:07
こんにちは。米山@クロノスです。
Javaにおいて、コンパイル時に「シンボルを解釈処理できません」と表示される理由は非常に単純です。
ふうたさんが「エラーメッセージのとおりです」と書いているように、実際にそのメッセージのとおりなのです。
ただ、それでは初学者にとって少し不親切とも思えるので、少しヒントを書いてみます。

コンパイラはソース・コードに書かれたシンボルを解釈してコンパイル処理を行います。たとえば、次のようなステートメントがあったとします。

int value;

このときコンパイラは「int」はデータ型だな、とか「value」は変数名だな、とか解釈して処理を行うのですが、その際にコンパイラが解釈できないシンボルに出会ったとき、まさに「シンボルを解釈処理できません」となってしまうのです。

では、シンボルを解釈できない理由とは何でしょうか?
逆にコンパイラが解釈できるシンボルとは次のようなものです。
・Javaのキーワード(例:class, public, int, if, for, ...)
・演算子(例:+, -, =, ...)
・クラスパスの通っている場所にある「クラス」および「インターフェイス」
(当然、完全修飾クラス名で記述しないのならimport文が必要)
・あらかじめ宣言された変数

つまり上記に当てはまらないものは、コンパイラは解釈できません。

さて、質問の件ですが、

引用:

シンボルを解釈処理できません。
シンボル: 変数 request



とあるので、コンパイラは変数「request」が解釈できないと言ってますね。
もう一度コードを良く見て、なぜ「request」という変数を解釈してくれないのか考えてみてください。




[ メッセージ編集済み 編集者: 米山@クロノス 編集日時 2003-09-15 01:08 ]
安二郎
会議室デビュー日: 2003/09/14
投稿数: 2
投稿日時: 2003-09-15 06:32
ご回答ありがとうございました。おっしゃるとおりでした。ありがとうございます。
1

スキルアップ/キャリアアップ(JOB@IT)