以下のサンプルプログラムをコンパイルすると
シンボルを見つけられません。
と出ます。
場所は:java.lang.Stringの クラス
if(line.isEmpty())
のlineとisEmpty()の間のコロンに「^」がついています。
javaのバージョンは「1.7.0_05」です。
PCのOSはXP Pro(SP2)です。
原因がわかる方教えてください。
import java.util.Scanner;
public class test_20120707 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int total = 0;
while (true) {
System.out.println("現在までの合計は " + total + " です。");
System.out.print("整数を入力: ");
String line = scanner.nextLine();
if (line.isEmpty()) {
break;
}
int value = Integer.valueOf(line);
total += value;
}
}
}
A 回答 (8件)
- 最新から表示
- 回答順に表示
No.8
- 回答日時:
JDKをバージョンアップしたらパスが通らなくなりコンパイルが出来なくなってしまったとのことですが、以下の手順で改善しないでしょうか?
「http://www.oracle.com/technetwork/java/javase/do …」から「Java SE 7u5」の「JDK DOWNLOAD」を選択し、Windows32用である Windows x86-「jdk-7u5-windows-i586.exe」をインストールしているという前提です。
【 パスの設定 】
1.「Windows」キーを押しながら「Pause」キーを押して”システム”画面を開きます。
2.「システム詳細設定」をクリックし、システムのプロパティを開きます。
3.詳細設定タブの「環境変数」をクリックします。
4.システム環境変数「Path」を選択し、「編集」をクリックします。(大文字小文字は無視されるので 「Path」「PATH」「path」はどれも同じです。例えば「PATH」があるのに「Path」を新規作成すると、「PATH」の内容を置き換えてしまうので注意してください。)
5.「変数値」の 最初 に「C:\Program Files\Java\jdk1.7.0_05\bin;」を追記します。(規定値のフォルダへインストールの場合)
6.結果、編集後の「Path」の「変数値」は、「C:\Program Files\Java\jdk1.7.0_05\bin;【元々のシステム環境変数入力値】」とします。 ( セミコロン(;)は複数の値を設定する場合の区切り文字なので、忘れずに記述します ) 「OK」をクリックします。
7.環境変数で「OK」をクリックします。
8.システムのプロパティで「OK」をクリックします。
【 設定の確認 】
1.「Windows」+「R」キーを押して「ファイル名を指定して実行」画面を開き、名前欄に「cmd」と入力し、「OK」をクリックすると、「コマンドプロンプト」画面が開きます。
2.「java -version」と入力すると、「java version “jdk1.7.0_05″」と表示されるはずです。
3.「javac -version」と入力すると、「javac jdk1.7.0_05」と表示されるはずです。
`javac`は、内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチファイルとして認識されていません。」と表示されエラーになる場合は、「コマンドプロンプト」画面で「path」または「set」と入力すると、環境変数の設定が表示されるので、意図した設定になっているか、「;」や「¥」が抜けていないかを確認してください。
また、環境変数を設定中に「コマンドプロンプト」画面を開いたままにしていると、その画面には環境変数の修正結果は反映されません。一度閉じて開き直すか、別の”コマンドプロンプト”画面を開いて設定が反映されたかを確認するようにしてみてください。
No.7
- 回答日時:
ごめんないさい 確認コマンド記載ミスしてました
JDKのバージョン確認が javac -version
JREのバージョン確認が java -version
なので
javac -version で確認して version1.4.x とか version1.5.x ではisEmptyメソッドは使えないJDKのバージョンになります
回答ありがとうございます。
バージョンということですか。
確かにバージョン確認をjava -varsionでとっていたのでJREのバージョンということになるのでしょうかね。
メールが遅れましたことをお詫びします。
PS.JDKをバージョンアップしましたが、今度はパスが通らなくなりコンパイルが出来なくなってしまいました。
質問のプログラムを実行するのにまだまだ時間がかかりそうです。
ありがとうございました。
No.6
- 回答日時:
Javaと書いてあったのをJDK(Java開発キット)の方を指していると思ってみていたのですが、JRE(Java実行環境)のほうがJava7という意味だったのであればJDKをインストールする必要があります。
まずは、実際どのJDKが認識されているかを、コマンドライン画面で「javac -version」(-java version」ではなく)
と入力して確認してはどうでしょうか
古いようであればJDKを更新してパスの設定をすると良いと思います。
参考URL:http://www.oracle.com/technetwork/java/javase/do …
No.5
- 回答日時:
開発環境のJDKが5.0に設定されているのだと思います。
Java API(Javadoc)確認したら、Stringクラスの
isEmptyメソッドは6.0から導入のと記載がありました。
ちなみに、このメソッドは同クラスのlengthメソッドが
0となるパターンでtrueを返す仕様になっています。
JDKを6.0に変更する、または"line.length() == 0"で
代用する方法はいかがですか?
回答ありがとうございます。
バージョンということですか。
確かにバージョン確認をjava -varsionでとっていたのでJREのバージョンということになるのでしょうかね。
メールが遅れましたことをお詫びします。
No.2
- 回答日時:
私の環境はJava6ですが、ソースをコピーさせて実行してもNo.1さんと同じでエラーにはなりませんでした。
「シンボルがが解決できない」エラーがでるのは、
・^の指す変数名、メソッド名、クラス名のスペルミス
・それらの宣言の忘れ
・クラス名の場合、import文の忘れ
・標準ライブラリ以外では、クラスパス設定の誤りの場合
です。
String#isEmptyメソッドはJava6からできたものです。
Java7以外の古いJavaもシステムに残っているのではないでしょうか。
もしも環境変数「Path」でJavaへのパスの書き順が、古いバージョンのJavaへのパスが左に、Java7へのパスが右に書かれていると、左側から優先利用されるので、isEmptyメソッドが未知のメソッドとしてエラーになるのではと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Java java 入力 3 4 3 出力 ABC DEFG HIJ このようなプログラムの書き方を教えてくだ 2 2022/07/15 14:18
- Ruby 【JAVA】数字をひし形に出力するプログラムについて 2 2022/07/11 23:32
- Java javaでのプログラム(配列)について質問です. 2 2022/10/14 22:27
- Java Java プログラム public class Main { public static void 3 2023/08/10 23:46
- C言語・C++・C# C# DatagridviewにExcelシートを反映するとエラーが出る 2 2023/05/06 17:12
- Java Java 配列<選挙> 4 2023/07/31 15:07
- Java Javaの問題なのですが、「3文字以上の英数字文字列を入力し、文字列の中に文字(9)が出てくるまでの 1 2023/06/06 18:55
- Java 直し方について教えて頂きたいです。 4 2022/08/13 02:11
- Java java final 1 2022/06/10 22:49
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
レコード件数の表示
-
Java初級 引数に適用できません
-
String.containsの反対機能はあ...
-
abstract と static を一緒に付...
-
C# 点の描き方をおしえてくだ...
-
なぜprotected overrideなのか
-
メソッドの引数に指定されてい...
-
不要なstaticメソッドの見分け...
-
Fileの読み取り専用の解除
-
【アクセス修飾子】アクセス修...
-
javaに"search"という関数 or ...
-
Javaの問題なんですが、練習14-...
-
JavaでOpenCVを扱いたいのです...
-
Jakarta POI での、excelのシ...
-
Javaのメモリの管理
-
YYYYMMDD書式の日付に対する適...
-
C言語での文字列より値を抜き出す
-
テキストfileの入力、変換、出力
-
IDLファイルとヘッダーファイル...
-
Javaの問題なんですが、Window ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
レコード件数の表示
-
Java初級 引数に適用できません
-
String.containsの反対機能はあ...
-
public static void main (Stri...
-
abstract と static を一緒に付...
-
Google Apps Script で getRang...
-
StringBufferからStringへキャ...
-
メソッド宣言の戻り値の型にク...
-
javaに"search"という関数 or ...
-
C# 点の描き方をおしえてくだ...
-
Java初心者です、エラーの意味...
-
なぜprotected overrideなのか
-
親の親のメソッドを呼ぶには?
-
C# でメソッドに送られてきたOb...
-
Javaの関数名が長い?
-
別クラスのmainメソッドの実行
-
[クラス名].[メソッド名].[メソ...
-
コマンドライン引数のチェック
-
contextってなんですか?
-
説明文書でのメソッド・変数の...
おすすめ情報