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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

コマンドプロンプト

コマンドプロンプト(cmd.exe)はMicrosoftによって提供されているコマンドラインインタプリタです。OS/2・Windows CE・Windows NTで使用可能です。

Q&A

解決済

2回答

7731閲覧

エラー:シンボルが見つけられません

退会済みユーザー

退会済みユーザー

総合スコア0

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

コマンドプロンプト

コマンドプロンプト(cmd.exe)はMicrosoftによって提供されているコマンドラインインタプリタです。OS/2・Windows CE・Windows NTで使用可能です。

0グッド

0クリップ

投稿2021/05/14 05:01

コマンドプロンプトで以下のプログラムをコンパイルすると、

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}

イメージ説明
イメージ説明

このコードをそのまま打ったのですがなぜエラーが出たのでしょうか?

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

1T2R3M4

2021/05/14 05:21 編集

>このコードをそのまま打った そのままではないですよね。 一度そのまま打って実験してみては。
dodox86

2021/05/14 05:21

> このコードをそのまま打ったのですが 全然"そのまま"では無いです。1行目から違います。
K_3578

2021/05/14 05:23

なんかクラス名違うし Main2クラス?のページと混同したんじゃないかと予想してます
m.ts10806

2021/05/14 05:24

「そのまま」と書く人で本当にそのまま打ってる人見たことないです。 参考書のせいではなく理解してコードを打ってないからです。
K_3578

2021/05/14 05:47

というか過去質問見る限り2週間前はEclipse使ってたのになんでコマンドプロンプトを 使ってるんだろう
dodox86

2021/05/14 06:28

@K_3578さん まぁ、本件はコマンドプロンプトを使用した為のエラーでは無いようですし、それは別に良いのではないかと思います。(後で開発環境違いによる問題・疑問が起きさえしなければ)
K_3578

2021/05/14 06:47

@dodox86さん 一応Eclipse使ってればコンパイル前に気付くかなと思ったので。 正直やってることが本のコードをただ写してるだけっぽいのでそれが1番の問題だとは思いますけどね。
退会済みユーザー

退会済みユーザー

2021/05/14 07:57

本のコードではMain3となっていますが自分はeclipseのMain2クラスでやりました。 コマンドプロンプトでないのはコマンドプロンプトでできなかったのでeclipseでした場合はどうなるのかと思ったからです。 また、一行目から違うのは実行した際に勝手にこのように書き換えられるからで、自分でこのようにかいたわけではありません。 本のコードをそのまま写していることが一番の問題とのことですが、自分は「このようなコードを打てばこのような結果になる」というようなことが何もわかっておらず、例えばいきなり全く使ったことのないコードで何かを作るということはできないので、まずは本のコードをそのまま写してみて大まかなコードの書き方や実行結果を確認したいと思いそのまま写しました。 自分は一度本を流し読みしただけで、一から自分の作りたいものを作るためのコードを書くことができないのですが、皆さんはどのようにしてそのような技術を身に着けたのか教ええいただきたいです。
dodox86

2021/05/14 08:07

回答もいただいてることですし、まずは本質問を解決しましょう。(たぶん、もう解決できますよね? できなければ、いただいた回答でもまだ何か分からないことがあるとか、応対しましょう)
dodox86

2021/05/14 08:13

質問をかきまわすつもりは無いですが、一応気になったのでコメントしておきます: [2021/05/14 16:57]の本欄コメントより: > コマンドプロンプトでないのはコマンドプロンプトでできなかったのでeclipseでした場合はどうなるのかと思ったからです。 質問自体は「コマンドプロンプトでコンパイル」とありますが、ちょっと何がなんだか話の流れが分かりづらいようです。Eclipseでプログラムのコードを編集し、コマンドプロンプト上でコンパイルしたということでしょうか。「コマンドプロンプトでできない」と言っている"できない"が何を指しているのか分かりません。(初心者なので、コマンドプロンプト上でコードを編集"できない"」と言っているのかな?)
退会済みユーザー

退会済みユーザー

2021/05/14 08:23

>Eclipseでプログラムのコードを編集し、コマンドプロンプト上でコンパイルしたということでしょうか。 Eclipseでコードを編集し、コマンドプロンプトでコンパイルしたときにエラーが出たため、一応Eclipseでも実行した。ということです。 わかりづかくてすみません また、皆様が指摘してくださった、一行目の import が違うということですが、Eclipseで実行したさいに勝手に書き換えられます。 コマンドプロンプトでコンパイルした際には本通りの import 文を書きました。
K_3578

2021/05/14 08:26

自分の回答追記しました。 Eclipseで書いてコマンドプロンプトで実行するのは何故やっているのかよく分からないけど、 結局自分が回答の最初に書いていたものが抜けていたからだと思います。
dodox86

2021/05/14 08:38

Eclipseによる保存時の自動のimportの最適化、再編成の機能ですか。その設定で何が行われるのか理解済みであれば便利で良い機能ですが、そうでなければ厄介(≒大きなお世話)なのかもしれませんね。
guest

回答2

0

ベストアンサー

Java

1Menubar mbar = new Menubar();

がないよね。


1行目からやってること違うので、理解してコードを書くようにしてください。

Java

1import.java.awt.*; 2import.java.awt.event.*;

これはjava.awtパッケージの全クラスをインポートする宣言です。
import.java.awt.*;のようなパッケージ名の後に*(アスタリスク)を入れることによって
そのパッケージのクラスを選ばずにまとめてインポート出来ます。
これをオンデマンド型インポートと言います。

追記

Eclipseだと私の環境では上記のオンデマンド型インポートは

Java

1import java.awt.Frame; 2import java.awt.Menu; 3import java.awt.MenuBar; 4import java.awt.TextArea; 5import java.awt.event.WindowAdapter; 6import java.awt.event.WindowEvent;

のように書き換えられます。
恐らくMenubar mbar = new Menubar();が無かったために、
import java.awt.MenuBar;が書き換わる際に使っていないクラスとして、
Eclipseが残さなかったんだと思います。

投稿2021/05/14 05:05

編集2021/05/14 08:19
K_3578

総合スコア1282

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2021/05/14 05:09

すみません自分の確認不足でした。 Menubar mbar = new Menubar(); を入れると、Menubarを型に解決できません。と表示されてしまいます、、、
K_3578

2021/05/14 05:40 編集

そら、Menubarクラスのmbarオブジェクトを生成するって言ってるのに Menubarクラスが無いって事っすよ。 このクラスがMain3?Main2?変わってるからちょっと知らないけど、 とりあえずMenubarクラスが教本の以前のページに出てきてないんすか? ↑訂正、java.awtパッケージ内にMenubarクラスありましたね、それが原因
momon-ga

2021/05/14 05:23

> このコードをそのまま打ったのですが コードの意味がわからず動きを見たいだけなら、まずはそのまま打った方がよいです。 importが違う<Menubarを型に解決できません
退会済みユーザー

退会済みユーザー

2021/05/14 08:43

追記ありがとうございます。 教えていただいたように書き換えたところ、ウィンドウが表示されました。 本では左上に「ファイル」というメニューが出ているのですが、自分の表示したウィンドウではでていません。 これはどこに問題があるのでしょうか? いくつも質問してしまいすみません。
K_3578

2021/05/14 08:47

質問者さんが、 Menu menu = new Menu("File"); であったり、 setTitle("Text editor"); というように「ファイル」、「テキストエディタ」という教本の内容から変更されているからでは?
K_3578

2021/05/14 09:14

というか一応問題一区切りしたんだしこの質問クローズして問題あるなら整理してから 新しくスレッド建てれば良いんじゃないかなぁ
dodox86

2021/05/14 09:35

@質問者さん 横からですみませんが、質問は基本、いち投稿につき一つです。解決するたびに違う質問を並べていったら、回答者さんの負担が増えるばかりですよね。あと、「本」と言っても何の本を参照されているのか閲覧者、回答者には分かりません。本は著作物なので無断での画像アップも本来はなるべく慎むべきだし、アップする場合はその本の誌名など引用元をご提示ください。
退会済みユーザー

退会済みユーザー

2021/05/14 11:01

わかりました。 ではとりあえずこの質問は解決ということにしておきます。
K_3578

2021/05/14 13:02

@dodox86さん ご配慮感謝します。
guest

0

本と一緒ではなく、
import しているものがテキストと違っていますよ

本の記述

import java.awt.*; import java.awt.event.*;

あなたのコード

import java.awt.Frame; import java.awt.Menu; import java.awt.TextArea; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent;

プログラミングが初めてのうちは、
まずは、見た目が完全に同じになるように打ち込んでみるといいですよ。

投稿2021/05/14 05:37

Yoshi88

総合スコア623

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2021/05/14 07:45

eclipseで実行したときに勝手にコードが書き換えられます。 自分でこのように書いてるわけではありません。。。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問