重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

一つのプログラムに対して、いくつかのファイルに分けて
記述されているとき、
たとえば、ファイル A.java と B.java があって
【A.java】
package shop;
 ・
 ・
 public class Shop {
  ・
  ・
  ・
}

【B.java】
packeage shop;
 ・
 ・
public class Buy(Shop shop){


}

という感じで、A.java内で定義したクラス型を他のファイルで使うと、
コンパイル時に、「シンボルを解決できません」というコンパイルエラーが出て
コンパイルできません。
こういう場合はどうすれば、良いのでしょうか?
初心者なので、非常に初歩的な質問かと思いますがよろしくお願いします。

A 回答 (3件)

>今後、いろいろなWEBアプリを作る際に、そのたびCLASSPATHを


>追加していくのでしょうか?
追加していく必要はあります。
今作成されているWEBアプリとは別にアプリを作成しようとした場合
、あらたに「CLASSPATH」を追加してあげないとコンパイルできません。
javac自体がどこにファイルがあるのかわからないので指定してあげないとだめですね。
    • good
    • 0

まずは、publicなクラス名とソースファイル名は一致させましょう。



shop.Shopなら
shop/Shop.java

shop.Buyなら
shop/Buy.java

です。

参考URL:http://www.tcct.zaq.ne.jp/ayato/programming/java …
    • good
    • 0

【B.java】


packeage shop;

綴りがpackeageになっています。正しくはpackageですね。
エラーが出るときにはエラー発見箇所が何行目か?という表示も
合わせて出るはずですので参照されると編集が早くなります。
    • good
    • 0
この回答へのお礼

ご返答ありがとうございます。
それに関しましては、ここへ書き込む際の純粋な記述ミスです。
また、B.java内でも、
public class XXX{
public void YYY(Aで定義したクラス そのクラス型変数){
・・・・
 }
}
と一般的な使い方です。
ソースの内容には全く記述ミスはありません。
(配布サンプルです。完全に完成されたソースですので)

とにかく、エラーは、ファイルAで定義されたクラス(クラス型)を
ファイルBで使う(?)箇所ごとに
「シンボルを解決できません」と出ます。

あれから、いろいろしてみて、
「CLASSPATH」にこのファイル群が入っているフォルダの親フォルダのパスを
追加してみると、エラーなくコンパイルできました。
しかし、今後、いろいろなWEBアプリを作る際に、そのたびCLASSPATHを
追加していくのでしょうか?
ほかに良い対処法がございましたらお教えください。

お礼日時:2003/01/20 04:41

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!