コマンドプロンプトで以下のプログラムをコンパイルすると、
Main2.java:20: エラー: シンボルを見つけられません
mbar.add(menu);
^
シンボル:   変数 mbar
場所: クラス MyWindow
Main2.java:21: エラー: シンボルを見つけられません
setMenuBar(mbar);
^
シンボル:   変数 mbar
場所: クラス MyWindow
エラー2個
というエラーメッセージが出ます。
Java
1import java.awt.Frame; 2import java.awt.Menu; 3import java.awt.TextArea; 4import java.awt.event.WindowAdapter; 5import java.awt.event.WindowEvent; 6class Main2 { 7 public static void main(String[] args) { 8 MyWindow mw = new MyWindow(); 9 10 } 11} 12 13class MyWindow extends Frame { 14 MyWindow() { 15 setTitle("Text editor"); 16 setSize(800,600); 17 TextArea ta = new TextArea(); 18 add(ta); 19 Menu menu = new Menu("File"); 20 mbar.add(menu); 21 setMenuBar(mbar); 22 setVisible(true); 23 addWindowListener( new WinListener()); 24 } 25} 26 27class WinListener extends WindowAdapter { 28 public void windowClosing(WindowEvent e) {System.exit(0);} 29}
このコードをそのまま打ったのですがなぜエラーが出たのでしょうか?
>このコードをそのまま打った
そのままではないですよね。
一度そのまま打って実験してみては。
> このコードをそのまま打ったのですが
全然"そのまま"では無いです。1行目から違います。
なんかクラス名違うし
Main2クラス?のページと混同したんじゃないかと予想してます
「そのまま」と書く人で本当にそのまま打ってる人見たことないです。
参考書のせいではなく理解してコードを打ってないからです。
というか過去質問見る限り2週間前はEclipse使ってたのになんでコマンドプロンプトを
使ってるんだろう
@K_3578さん
まぁ、本件はコマンドプロンプトを使用した為のエラーでは無いようですし、それは別に良いのではないかと思います。(後で開発環境違いによる問題・疑問が起きさえしなければ)
@dodox86さん
一応Eclipse使ってればコンパイル前に気付くかなと思ったので。
正直やってることが本のコードをただ写してるだけっぽいのでそれが1番の問題だとは思いますけどね。

本のコードではMain3となっていますが自分はeclipseのMain2クラスでやりました。
コマンドプロンプトでないのはコマンドプロンプトでできなかったのでeclipseでした場合はどうなるのかと思ったからです。
また、一行目から違うのは実行した際に勝手にこのように書き換えられるからで、自分でこのようにかいたわけではありません。
本のコードをそのまま写していることが一番の問題とのことですが、自分は「このようなコードを打てばこのような結果になる」というようなことが何もわかっておらず、例えばいきなり全く使ったことのないコードで何かを作るということはできないので、まずは本のコードをそのまま写してみて大まかなコードの書き方や実行結果を確認したいと思いそのまま写しました。
自分は一度本を流し読みしただけで、一から自分の作りたいものを作るためのコードを書くことができないのですが、皆さんはどのようにしてそのような技術を身に着けたのか教ええいただきたいです。
回答もいただいてることですし、まずは本質問を解決しましょう。(たぶん、もう解決できますよね? できなければ、いただいた回答でもまだ何か分からないことがあるとか、応対しましょう)
質問をかきまわすつもりは無いですが、一応気になったのでコメントしておきます:
[2021/05/14 16:57]の本欄コメントより:
> コマンドプロンプトでないのはコマンドプロンプトでできなかったのでeclipseでした場合はどうなるのかと思ったからです。
質問自体は「コマンドプロンプトでコンパイル」とありますが、ちょっと何がなんだか話の流れが分かりづらいようです。Eclipseでプログラムのコードを編集し、コマンドプロンプト上でコンパイルしたということでしょうか。「コマンドプロンプトでできない」と言っている"できない"が何を指しているのか分かりません。(初心者なので、コマンドプロンプト上でコードを編集"できない"」と言っているのかな?)

>Eclipseでプログラムのコードを編集し、コマンドプロンプト上でコンパイルしたということでしょうか。
Eclipseでコードを編集し、コマンドプロンプトでコンパイルしたときにエラーが出たため、一応Eclipseでも実行した。ということです。
わかりづかくてすみません
また、皆様が指摘してくださった、一行目の import が違うということですが、Eclipseで実行したさいに勝手に書き換えられます。
コマンドプロンプトでコンパイルした際には本通りの import 文を書きました。
自分の回答追記しました。
Eclipseで書いてコマンドプロンプトで実行するのは何故やっているのかよく分からないけど、
結局自分が回答の最初に書いていたものが抜けていたからだと思います。
Eclipseによる保存時の自動のimportの最適化、再編成の機能ですか。その設定で何が行われるのか理解済みであれば便利で良い機能ですが、そうでなければ厄介(≒大きなお世話)なのかもしれませんね。

回答2件
あなたの回答
tips
プレビュー







