質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

89.55%

コンパイルがうまく行きません

解決済

回答 2

投稿

  • 評価
  • クリップ 1
  • VIEW 2,577

modonokouki

score 24

avac ShapeTester.java
ShapeTester.java:8: エラー: シンボルを見つけられません
        Shape [] a = new Shape[2];
        ^
  シンボル:   クラス Shape
  場所: クラス ShapeTester
ShapeTester.java:8: エラー: シンボルを見つけられません
        Shape [] a = new Shape[2];
                         ^
  シンボル:   クラス Shape
  場所: クラス ShapeTester
ShapeTester.java:9: エラー: シンボルを見つけられません
        a[0] = new Point();//点,Shape型のクラス型変数であってShapeから派生したクラスのインスタンスを参照している
                   ^
  シンボル:   クラス Point
  場所: クラス ShapeTester
ShapeTester.java:10: エラー: シンボルを見つけられません
        a[1] = new Rectangle(4,3);//長方形、Shape型のクラス型変数であってShaoeから派生したクラスのインスタンスを参照している
                   ^
  シンボル:   クラス Rectangle
  場所: クラス ShapeTester
ShapeTester.java:12: エラー: シンボルを見つけられません
        for(Shape s: a){
            ^
  シンボル:   クラス Shape
  場所: クラス ShapeTester
エラー5個

~  java_home -v
zsh: command not found: java_home
➜  ~   /.MacOSX/environment.plist
zsh: no such file or directory: /.MacOSX/environment.plist
➜  ~   /.MacOSX/environment.plist
zsh: no such file or directory: /.MacOSX/environment.plist
➜  ~  emacs zshrc~
➜  ~  emacs zshrc
➜  ~  cd eclipse
cd: no such file or directory: eclipse

➜  ~  emacs eclipse
➜  ~  emacs bash_profile
➜  ~  echo $PATH
/usr/local/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
➜  ~  sudo vi .bash_profile
Password:
➜  ~  sudo vi .bash_profile
➜  ~  echo $PATH
/usr/local/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
➜  ~  sudo vi .bash_profile
Password:
➜  ~  cd javajava
➜  javajava  pwd
/Users/kokimadono/javajava
➜  javajava  sudo vi .bash_profile
➜  javajava  echo $PATH
/usr/local/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
➜  javajava  cd
➜  ~  sudo vi .bash_profile
➜  ~  echo $PATH
/usr/local/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
➜  ~  sudo vi /etc/paths
➜  ~  echo $PATH
/usr/local/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
➜  ~  sudo vi /etc/paths
➜  ~  source /etc/paths
/etc/paths:1: permission denied: /usr/local/bin
/etc/paths:2: permission denied: /usr/bin
/etc/paths:3: permission denied: /bin
/etc/paths:4: permission denied: /usr/sbin
/etc/paths:5: permission denied: /sbin
/etc/paths:6: permission denied: /Users/kokimadono/javajava
➜  ~  sudo vi .bash_profile
➜  ~  source .bash_profile
.bash_profile:1: command not found: rbenv
.bash_profile:2: command not found: rbenv
➜  ~  echo $PATH
/usr/local/bin:/Users/kokimadono/javajava:/usr/local/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
➜  ~  cd
➜  ~  cd javajava
➜  javajava  cd kakue
➜  kakue  ls
Point.class     Rectangle.class Shape.class     bin             src
➜  kakue  cd src
➜  src  ls
applet gif    kuruma line   zukei
➜  src  cd zukei
➜  zukei  ls
Shape.java       ShapeTester.java
➜  zukei  javac ShapeTester.java

package zukei;

abstract class Shape{
    abstract void draw();
    //ここでは定義できないから派生したクラスで定義してくださいね
}
//スーパークラスの抽象メソッドをオーバーライドして、メソッドの本体の定義を宣言することを[メソッドを実装する]という
//点
class Point extends Shape{
    Point(){}//コンストラクタ

    void draw(){
        System.out.println('+');
    }
}

//長方形
class Rectangle extends Shape{
    private int width;
    private int height;
    //コンストラクタ
    Rectangle(int width,int height){
        this.width = width;
        this.height=height;
    }
    void draw(){
        for(int i=1;i<=height;i++){
            for(int j=1;j<=width;j++)
                System.out.println('*');;
            System.out.println();
        }
    }
}

package zukei;

class ShapeTester{
    public static void main(String[] args){
        //以下の宣言はエラー:抽象クラスはインスタンス化出来ない。もし出来たら実態のないメソッドdrawをs.draw()とかで呼び出せることになってしまう
        //Shape a = new Shape();

        Shape [] a = new Shape[2];
        a[0] = new Point();//点,Shape型のクラス型変数であってShapeから派生したクラスのインスタンスを参照している
        a[1] = new Rectangle(4,3);//長方形、Shape型のクラス型変数であってShaoeから派生したクラスのインスタンスを参照している

        for(Shape s: a){
            s.draw();
            System.out.println();
        }
    }
}

①エラー②コマンドライン(zsh)③④ファイル。コマンドラインによく
エラー: メイン・メソッドがクラスCarで見つかりません。次のようにメイン・メソッドを定義してください。
   public static void main(String[] args)
またはJavaFXアプリケーション・クラスはjavafx.application.Applicationを拡張する必要があります

みたいなえらーがでるのもよくわかりません

初心者ですごく困っているので親切な方良かったら教えていただきたいです!

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • 退会済みユーザー

    2016/02/12 22:22

    こちらの質問が他のユーザから「やってほしいことだけを記載した丸投げの質問」という指摘を受けました
    「質問を編集する」ボタンから編集を行い、調査したこと・試したことを記入していただくと、回答が得られやすくなります。

  • KondoSatoru

    2016/02/12 22:49

    </>ボタンを押して

    ```ここに言語を入力
    コード
    ```

    この中にコードを書くことで質問の見通しが良くなります。
    現在の状態ですと、何が質問かわかりません。

    「ここに言語を入力」に「java」、
    「コード」にjavaコードを書いてください。

    お聞きしたいのですが、もしかすると一つのファイル「ShapeTester.java」に全てのクラスを書いているのですか?

    キャンセル

  • modonokouki

    2016/02/12 22:51

    ご指摘ありがとうございます!今すぐ訂正します
    ファイルは2つに分けています、それも訂正して書き直します

    キャンセル

回答 2

checkベストアンサー

0

初心者であれば、1クラス1ファイルの原則を守って書いた方がいいと思います。
変則的な書き方をすると、普通なら起きないようなエラーにぶつかって時間の無駄です。
また、問題を他人に質問するときも伝わりにくいです。
Java はどうファイルに分割されているかでコードの解釈がかなり変わる言語なので、
どのコードがどのファイルに書かれているかを書くのは質問するときは必須事項です。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/02/12 23:58

    確認させていただきたいのですが1クラス1ファイルでディレクトリにまとめ、インポートをうまく使えばシンボルが見つからなかったり、ロードできないなどのトラブルは起きない、環境変数は全く関係ないということで大丈夫ですか?僕的にはクラスの名前なども影響出るとかちょっと考えたのですがどうでしょうか?

    キャンセル

  • 2016/02/13 00:33

    「トラブルは起きない、環境変数は全く関係ないということで大丈夫ですか」->
    大丈夫じゃないです。
    どうやったところでトラブルは起きます。
    ただ、多くの人と同じやり方をしていれば、その起きるトラブルの内容も、その出方も、他の人も良く出すようなものが多くなり、ネットで検索しても、人に聞いても答えが見つかりやすくなるという話です。
    それから、ディレクトリについては、パッケージとディレクトリの関係を理解することがまず先決だと思います。
    クラス設計とパッケージ設計をきちんとして、それにしたがって決めてください。

    ただ、これはもう「初心者」のレベルの話ではないですね。

    「自分は初心者で難しいことは全然わからない」と本気で思っているのなら、
    勉強用のサンプルプログラムは、全てデフォルトパッケージにしてしまったほうがいいと思います。

    その構成に疑問を持ち始めたら・・・もう初心者とはいえませんね。
    そこまで考えるだけの知識が付いたのなら、その先は自分で考えるべきです。
    わからないなら本なりWeb検索なりするべきです。
    そして、それでもどうしても自分の力で対処できない問題に突き当たったとき、またここに質問にきてください。

    キャンセル

  • 2016/02/13 20:30

    アドバイスありがとうございます!

    正直まだ初心者の自覚はあるのでとりあえずデフォルトパッケージで作ってみます
    これでも本当にjavaのコードを上手くかけるようになりたいと頑張ってるつもりですがどうしてもなかなか理解できないです...

    ある程度環境変数などに対して知識がついてきたらその時にまたチャレンジしてみようと思います!

    ありがとうございました!

    キャンセル

0

以下のようにpackageのclassを利用する側にimport文を書いたら、コンパイルが通りました。

[Shape.java]

package zukei;
abstract class Shape{ 
    abstract void draw(); 
} 

class Point extends Shape{ 
    Point(){}
    void draw(){ 
        System.out.println('+'); 
    } 
}

class Rectangle extends Shape{ 
    private int width; 
    private int height; 
    Rectangle(int width,int height){ 
        this.width = width; 
        this.height=height; 
    } 
    void draw(){ 
        for(int i=1;i<=height;i++){ 
            for(int j=1;j<=width;j++) 
                System.out.println('*');; 
            System.out.println(); 
        } 
    } 
}
[ShapeTester.java]

package zukei;
import zukei;

class ShapeTester{ 
    public static void main(String[] args){ 
        Shape [] a = new Shape[2]; 
        a[0] = new Point();
        a[1] = new Rectangle(4,3);
        for(Shape s: a){ 
            s.draw(); 
            System.out.println(); 
        } 
    } 
}
$ javac ShapeTester.java
$ java ShapeTester
結果

+

*
*
*
*

*
*
*
*

*
*
*
*

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/02/12 23:20

    packageなしだとデフォルトのパッケージになると思うんですけどなんでパッケージを指定するのとしないのでコンパイルに差が出てしまうのでしょうか...?個人的には環境変数の設定がおかしいから指定したパッケージを使用してコンパイルできないのではと考えています

    キャンセル

  • 2016/02/12 23:31

    回答修正しました。

    キャンセル

  • 2016/02/12 23:59

    参考書などを丸写しするとこのようなエラーが出てしまうのですかね....確かimport文が書いてなかった気がするので...

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 89.55%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る