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

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

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

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

コンパイル

コンパイルとは、プログラミング言語のテキストソース(ソースコード)をコンピュータ上で実行可能な形式(オブジェクトコード)に変換することをいいます

コンパイルエラー

コンパイルのフェーズで生成されるエラーです。よく無効なシンタックスやタイプが含まれているとき発生します。

Q&A

解決済

1回答

874閲覧

コンパイルエラーについて

退会済みユーザー

退会済みユーザー

総合スコア0

Java

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

コンパイル

コンパイルとは、プログラミング言語のテキストソース(ソースコード)をコンピュータ上で実行可能な形式(オブジェクトコード)に変換することをいいます

コンパイルエラー

コンパイルのフェーズで生成されるエラーです。よく無効なシンタックスやタイプが含まれているとき発生します。

0グッド

0クリップ

投稿2021/06/23 22:50

前提・実現したいこと

エクリプスで作成したプログラムを、「.java」で指定してエクスポートし、Documentsフォルダにおきました。

読み込んでもらう予定の、作成したデータは、絶対パスで指定してあり、エクリプスのなかで実行をしたさいに、コンソールにしっかりと、目標の結果が出力されました。(カンマ区切りのテキストデータを読み込むプログラミング)

次に、ローカルのコマンドプロンプトで実行しようと思い、「cd Documents」として、Documentsフォルダに移ったことを確認して、エラーも、出ませんでした。

そして、早速、Documentsフォルダにある「Task02.java」のファイルをコンパイルするため、「javac Task02.java」と入力しました。

すると、以下のようなエラーが出てきました。

コンパイルエラーはあれど、このようなエラーは初めてで、煮詰まってしまい、これ以上は自分でどうするべきかわからず、もしよろしければ教えていただけると幸いです。よろしくお願い致します。

発生している問題・エラーメッセージ

Active code page: 65001 C:\Users\snk19\Documents>javac Task02.java Task02.java:14: G[: ̕(0x9A)́AGR[fBOwindows-31jɃ}bvł܂ //hasNext関数で値があるかを判? ^ Task02.java:33: G[: ̕(0x9A)́AGR[fBOwindows-31jɃ}bvł܂ System.out.print("社員コード?" + empCode); ^ Task02.java:34: G[: ̕(0xEF)́AGR[fBOwindows-31jɃ}bvł܂ System.out.print("氏名??" + empName); ^ Task02.java:34: G[: ̕(0x9A)́AGR[fBOwindows-31jɃ}bvł܂ System.out.print("氏名??" + empName); ^ Task02.java:35: G[: ̕(0x9A)́AGR[fBOwindows-31jɃ}bvł܂ System.out.println("支給額?" + payment00); ^ Task02.java:40: G[: ̕(0x9A)́AGR[fBOwindows-31jɃ}bvł܂ System.out.print("社員コード?" + empCode); ^ Task02.java:41: G[: ̕(0xEF)́AGR[fBOwindows-31jɃ}bvł܂ System.out.print("氏名??" + empName); ^ Task02.java:41: G[: ̕(0x9A)́AGR[fBOwindows-31jɃ}bvł܂ System.out.print("氏名??" + empName); ^ Task02.java:42: G[: ̕(0x9A)́AGR[fBOwindows-31jɃ}bvł܂ System.out.println("支給額?" + payment01); ^ Task02.java:47: G[: ̕(0x9A)́AGR[fBOwindows-31jɃ}bvł܂ System.out.print("社員コード?" + empCode); ^ Task02.java:48: G[: ̕(0xEF)́AGR[fBOwindows-31jɃ}bvł܂ System.out.print("氏名??" + empName); ^ Task02.java:48: G[: ̕(0x9A)́AGR[fBOwindows-31jɃ}bvł܂ System.out.print("氏名??" + empName); ^ Task02.java:49: G[: ̕(0x9A)́AGR[fBOwindows-31jɃ}bvł܂ System.out.println("支給額?" + payment02); ^ Task02.java:54: G[: ̕(0x9A)́AGR[fBOwindows-31jɃ}bvł܂ System.out.print("社員コード?" + empCode); ^ Task02.java:55: G[: ̕(0xEF)́AGR[fBOwindows-31jɃ}bvł܂

該当のソースコード

Java

1ソースコード 2 3import java.io.File; 4import java.io.FileNotFoundException; 5import java.util.Scanner; 6 7public class Task02 { 8public static void main(String[] args) { 9File file = new File("C:/pleiades/workspace/taskA/src/emo01.txt"); 10//File file = new File("C:/Users/snk19/Documents/emp01.txt"); 11 12try (Scanner scanner = new Scanner(file)) { 13scanner.useDelimiter(","); 14 15 16//hasNext関数で値があるかを判定 17while (scanner.hasNextLine()) { 18//System.out.println("ああああ"); 19 20//String型をint型へ変換 21String empCode = scanner.next(); 22String empName = scanner.next(); 23String basicPay = scanner.next(); 24int basic = Integer.parseInt(basicPay); 25 26String day = scanner.next(); 27int days = Integer.parseInt(day); 28 29String empSec = scanner.next(); 30int empStatus = Integer.parseInt(empSec); 31 32switch (empStatus) { 33case 0: 34int payment00 = basic + 1000000; 35System.out.print("社員コード:" + empCode); 36System.out.print("氏名:" + empName); 37System.out.println("支給額:" + payment00); 38break; 39 40case 1: 41int payment01 = basic + 500000; 42System.out.print("社員コード:" + empCode); 43System.out.print("氏名:" + empName); 44System.out.println("支給額:" + payment01); 45break; 46 47case 2: 48int payment02 = basic + 300000; 49System.out.print("社員コード:" + empCode); 50System.out.print("氏名:" + empName); 51System.out.println("支給額:" + payment02); 52break; 53 54case 3: 55int payment03 = basic + 100000; 56System.out.print("社員コード:" + empCode); 57System.out.print("氏名:" + empName); 58System.out.println("支給額:" + payment03); 59break; 60 61case 4: 62int payment04 = basic; 63System.out.print("社員コード:" + empCode); 64System.out.print("氏名:" + empName); 65System.out.println("支給額:" + payment04); 66break; 67 68case 5: 69int payment05 = basic * days; 70System.out.print("社員コード:" + empCode); 71System.out.print("氏名:" + empName); 72System.out.println("支給額:" + payment05); 73break; 74} 75//next関数は前から順番に値を取得 76scanner.nextLine(); 77} 78 79} 80 81//scanner.nextLine(); 82 83catch (FileNotFoundException e) { 84e.printStackTrace(); 85} 86 87} 88}

試したこと

1、文字コードをUTF-8であことを確認
2、境変数などでJAVA_HOMEをセット
3、javaのバージョンを確認

補足情報(FW/ツールのバージョンなど)

Javaは、ヴァージョン11

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

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

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

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

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

guest

回答1

0

ベストアンサー

こちらと同様の問題ではないでしょうか??
javac -encoding utf-8 Task02.java
のように、文字コードを指定してjavacを実行しましょう。

【追記】javacの実行時に文字コードを指定しないと、Windwosの場合だと"MS932"で実行されるかと思います。

参考資料1:Java | ソースファイルのエンコーディングを指定してコンパイルする
参考資料2:Java | デフォルトエンコーディングを確認する

投稿2021/06/23 22:53

編集2021/06/23 23:04
hallen0225

総合スコア587

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

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

退会済みユーザー

退会済みユーザー

2021/06/23 22:58

ご回答ありがとうございます。以下のようになりました。 ^ G[28 C:\Users\snk19\Documents>javac -encoding=UTF8 Task02.java G[: -encoding=UTF8͖ȃtOł gp@: javac <options> <source files> gp”\ȃIvṼXgɂ‚ẮA--helpgp܂ C:\Users\snk19\Documents>java Task02 G[: CENXTask02���oу[hł܂ł : java.lang.ClassNotFoundException: Task02 C:\Users\snk19\Documents>
hallen0225

2021/06/23 22:59

入れ違いで回答を修正しております。("javac -encoding utf-8 Task02.java"が正) ご確認ください。
退会済みユーザー

退会済みユーザー

2021/06/23 23:04

ありがとうございます。コンパイルエラーはなくなったのですが、そのあとのファイルの出力をしてくれません。 C:\Users\snk19\Documents>javac -encoding utf-8 Task02.java C:\Users\snk19\Documents>java Task02 C:\Users\snk19\Documents>javac -encoding utf-8 Task02.java C:\Users\snk19\Documents>java Task02 C:\Users\snk19\Documents>
退会済みユーザー

退会済みユーザー

2021/06/23 23:06

以下が、コマンドプロンプトで出力して欲しいことです。 社員コード:0001氏名:花山花子支給額:31000000 社員コード:0002氏名:中山中子支給額:900000 社員コード:0003氏名:北山北子支給額:600000 社員コード:0004氏名:東山東子支給額:300000 社員コード:0005氏名:南山南子支給額:300000 社員コード:0006氏名:山田太郎支給額:100000 社員コード:0007氏名:西山西雄支給額:100000 社員コード:0008氏名:中野信二支給額:100000 社員コード:0009氏名:神山雄太支給額:250000
hallen0225

2021/06/23 23:07

C:\Users\snk19\Documents内に、Task02.classというファイルは作成されていますか?? 同じソースコードでこちらで確認したころ、ファイルが作成され、javaコマンドで実行できました。
退会済みユーザー

退会済みユーザー

2021/06/23 23:11

Task02のファイルパスです。 "C:\Users\snk19\Documents\Task02.java"
hallen0225

2021/06/23 23:12

javacを実行したときに、「Task02.class」というファイルが出来たか、という質問です。
hallen0225

2021/06/23 23:13

あと、コンパイルエラーは出なくなったとのことですが、本当にそれ以外には何のメッセージも出ていないのでしょうか。 ちなみに、Task02.classが作成されていないとしたら、下記のようなメッセージが出るはずです。 PS D:\Data\Program\Java> java Task02 エラー: メイン・クラスTask02を検出およびロードできませんでした 原因: java.lang.ClassNotFoundException: Task02
退会済みユーザー

退会済みユーザー

2021/06/23 23:16

Task02で、新しいファイルが作成されていました。ワードパッドです。いま、新しくできたのは、 「javac」「java」「Task02.class」です。
退会済みユーザー

退会済みユーザー

2021/06/23 23:17

hallenさんのアドバイスのもと、コンパイルを行ったときの結果です。 C:\Users\snk19\Documents>javac -encoding utf-8 Task02.java C:\Users\snk19\Documents>java Task02 C:\Users\snk19\Documents>javac -encoding utf-8 Task02.java C:\Users\snk19\Documents>java Task02 C:\Users\snk19\Documents>
hallen0225

2021/06/23 23:18

「javac」「java」というファイルが出来るというのはおかしいですね。 それはどのフォルダに出来ましたか?
退会済みユーザー

退会済みユーザー

2021/06/23 23:18

コピペなので、これ以外のメッセージは出ておりません。
退会済みユーザー

退会済みユーザー

2021/06/23 23:19

Documents内の、Task02.javaや、Task02.classと同じ場所にできました。
hallen0225

2021/06/23 23:24

テキストファイルの内容を提示いただけますでしょうか。(ソース自体が間違っている可能性もあります) (「java」「javac」というファイルは出来るはずがないのですが、原因不明のため一旦脇に置きます)
退会済みユーザー

退会済みユーザー

2021/06/23 23:27

こちらが、ファイルパスです。 0001,花山花子,30000000,022,0, 0002,中山中子,00400000,022,1, 0003,北山北子,00300000,022,2, 0004,東山東子,00200000,022,3, 0005,南山南子,00200000,022,3, 0006,山田太郎,00100000,022,4, 0007,西山西雄,00100000,022,4, 0008,中野信二,00100000,022,4, 0009,神山雄太,00050000,005,5, "C:\Users\snk19\Documents\emp01.txt" いま本当に馬鹿なことに気づいたのですが、ソースコードで、emo01と指定していました。これで解決できるといいのですが、、、。
退会済みユーザー

退会済みユーザー

2021/06/23 23:28

ファイル名をemo01に変えてみます
dodox86

2021/06/23 23:29

@質問者さん 横からですみませんが、質問の本題はコンパイルエラーであり、それが解決した上でのプログラムの不具合は本来、別の問題です。
hallen0225

2021/06/23 23:51

ファイル名が違っていたのであれば、実行時にFileNotFoundExceptionが発生して、エラーメッセージが表示されるはずですので、そこが原因ではないのだと思います。 (逆に今まで出なかったのが不思議ではありますが。) この質問は解決済みにされたようなので、こちらの件は改めて質問されるのがよいかと思います。
退会済みユーザー

退会済みユーザー

2021/06/24 00:18

了解です、ありがとうございまいました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問