-PR-
解決済み

シンボルが解釈できない???

  • すぐに回答を!
  • 質問No.225365
  • 閲覧数428
  • ありがとう数3
  • 気になる数0
  • 回答数5
  • コメント数0

お礼率 66% (294/439)

ファイルは全て同じディレクトリ中に入っています。
ItemS.javaというファイルをコンパイルするとシンボルを解釈処理できません,というエラーが表示されます。ソース内容は以下です。

//商品ID指定による商品の検索
public Item getItem(int id) {
Item item = null;
for(int i = 0; i < items.size(); i++) {
item = getItemByIndex(i);
if(item.getId() == id) {
return item;
}
}
return null;
}
<エラー内容MS-DOSより>
Items.java:39:シンボルを解釈処理できません。
シンポル : クラス Item
位置 :Itemのクラス
public Item getItem(int id) {
    ^
という内容です。
ちなみにItem.javaの一部ソース内容です。
private int id;
public class Item {
public Item(int id, String name, double price) {
this.id = id;
}
 //商品IDプロパティ
public void setId(int id) {
this.id = id;
}
public int getId() {
return id;
}
  以上です。なぜ解釈処理されないか原因が分かりません。アドバイスお願い
します。
通報する
  • 回答数5
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

質問者が選んだベストアンサー

  • 回答No.5
レベル11

ベストアンサー率 47% (160/334)

解決したということなので,今さらかもしれませんが,一応アドバイスなどを。

Java 2 SE SDK 1.2 (俗称 JDK 1.2)以降は,CLASSPATH環境変数は設定しないほうが無難です(特に,初心者の場合)。CLASSPATH環境変数を設定しない場合,基本ライブラリーと拡張ライブラリーディレクトリー下のライブラリー,それにカレントディレクトリーはデフォルトで参照されます。

どうしてもCLASSPATH環境変数を設定する必要がある場合は,先頭に "." ,つまりカレントディレクトリーを指定しておくことをお薦めします。そうすれば,今回のような問題は回避できると思います。

クラスパス関連の情報については,参考URLに挙げた2つの文書を熟読されることをお薦めします。

それから,これは余談になりますが,javacはソースを見てコンパイルしてくれます。つまり,あるソースをコンパイルするとき,そのソースが参照しているクラスも自動的にコンパイルしてくれます(時刻を見て,クラスファイルの方がソースファイルより古ければソースをリコンパイルしてくれる機能もあります)。その辺のことは,ここ↓に書いてあります。

http://java-house.jp/ml/archive/j-h-b/001871.html#body

なお,Javaで開発を行われる方全てに対し,何かトラブルに遭ったときは,まず,ここ↓

http://java-house.jp/ml/topics/

を参照されることを強くお薦めします。

その他の回答 (全4件)

  • 回答No.1
レベル14

ベストアンサー率 50% (1122/2211)

> なぜ解釈処理されないか原因が分かりません。

私にだって正確なところは分かりません :-)

ありそうなこととして、その class Item をコンパイルした結果の Item.class は
classpath が通ったところに存在していないんじゃないでしょうか?

コンパイラはソースを見てくれるわけではありません。利用しているクラスがあるならば
その .class ファイルが必要です。


  • 回答No.2
レベル11

ベストアンサー率 47% (160/334)

もう少し正確な情報が欲しいので,とりあえず補足要求を。

1) Item クラス(Item.java ファイル)だけのコンパイルは通りますか?
2) 1で Item.java をコンパイルしたとき,Item.class ファイルはどこにできますか?
3) それは Items.java ファイルがあるのと同じフォルダーですか?
補足コメント
tel

お礼率 66% (294/439)

補足いたします。
>1) Item クラス(Item.java ファイル)だけのコンパイルは通りますか?

A> Item.javaはコンパイルできてます。

>2) 1で Item.java をコンパイルしたとき,Item.class ファイルはどこにできますか? 3) それは Items.java ファイルがあるのと同じフォルダーですか?

A>Item.classはItem.javaと同じディレクトリにあります。
投稿日時 - 2002-02-27 09:15:24
お礼コメント
tel

お礼率 66% (294/439)

Classpathの設定でディレクトリ名を全部記入していた結果だめだったみたいです。例えば C:\ab\cd\ef\gのディレクトリのgを外したらコンパイルできました。
なぜか理由はわからないんですけど・・・。
いろいろご迷惑おかけしました。
投稿日時 - 2002-02-27 11:13:51
  • 回答No.3

同一のディレクトリに存在するということですが、classpathにカレントディレクトリが設定されていますか?


No.1の方が指摘されているように、javaのコンパイラは例え同一のディレクトリ内であっても、そのディレクトリにclasspathが通っていないと、シンボルの解釈をしてくれません。


classpathにカレントディレクトリ「.」か「.\」を追加してやるか、同一ディレクトリ内の全てのjavaファイルを一度にコンパイル(「C:\test> javac *.java」とか)すれば上手くいきませんか?
補足コメント
tel

お礼率 66% (294/439)

Classpathの設定でディレクトリ名を全部記入していた結果だめだったみたいです。例えば C:\ab\cd\ef\gのディレクトリのgを外したらコンパイルできました。
なぜか理由はわからないんですけど・・・。
いろいろご迷惑おかけしました。
投稿日時 - 2002-02-27 11:14:44
  • 回答No.4
レベル14

ベストアンサー率 50% (1122/2211)

他の方(No.2 の aton さん)の補足要求の蒸し返しになってしまうのですが、
Item.class というファイルは Items.java (sがついた方ですよ!)をコンパイルしようとしている
ディレクトリにあるのですか?
お礼コメント
tel

お礼率 66% (294/439)

Classpathの設定でディレクトリ名を全部記入していた結果だめだったみたいです。例えば C:\ab\cd\ef\gのディレクトリのgを外したらコンパイルできました。
なぜか理由はわからないんですけど・・・。
いろいろご迷惑おかけしました。
投稿日時 - 2002-02-27 11:13:16
このQ&Aのテーマ
このQ&Aで解決しましたか?
関連するQ&A
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-

特集


開業・独立という夢を持つ人へ向けた情報満載!

ピックアップ

ページ先頭へ