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

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

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

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

Q&A

解決済

2回答

4615閲覧

javaのコンパイルエラーが分からないです

k-tan

総合スコア19

Java

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

0グッド

0クリップ

投稿2018/01/05 04:26

編集2018/01/06 04:30

ドットインストールでjavaのレッスンをはじめました。
まず初めのHello Worldの表示でつまづいています。
レッスンと同じように入力しコンパイルしましたがエラーが出てうまく行きません
public class MyApp {
public static void main(String[] args) {
System.out.println("Hello World");
}
}
初めてのコンパイル実行時の状態です。

MyApp.java:1: エラー: この文字は、エンコーディングUTF8にマップできません �� ^ MyApp.java:1: エラー: この文字は、エンコーディングUTF8にマップできません �� ^ MyApp.java:2: エラー: '\u0000'は不正な文字です ^ MyApp.java:3: エラー: '\u0000'は不正な文字です [.ShellClassInfo] ^ MyApp.java:3: エラー: class、interfaceまたはenumがありません [.ShellClassInfo] ^ MyApp.java:3: エラー: '\u0000'は不正な文字です [.ShellClassInfo] ^ MyApp.java:3: エラー: '\u0000'は不正な文字です [.ShellClassInfo] ^ MyApp.java:3: エラー: '\u0000'は不正な文字です [.ShellClassInfo] ^ MyApp.java:4: エラー: '\u0000'は不正な文字です ^ MyApp.java:5: エラー: '\u0000'は不正な文字です LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21769 ^ MyApp.java:5: エラー: '\u0000'は不正な文字です LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21769 ^ MyApp.java:5: エラー: '\u0000'は不正な文字です LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21769 ^ MyApp.java:5: エラー: '\u0000'は不正な文字です LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21769 ^ MyApp.java:5: エラー: class、interfaceまたはenumがありません LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21769 ^ MyApp.java:5: エラー: '\u0000'は不正な文字です LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21769 ^ MyApp.java:5: エラー: '\'は不正な文字です LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21769 ^ MyApp.java:5: エラー: '\u0000'は不正な文字です LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21769 ^ MyApp.java:5: エラー: '\'は不正な文字です LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21769 ^ MyApp.java:5: エラー: '\u0000'は不正な文字です LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21769 ^ MyApp.java:5: エラー: '\u0000'は不正な文字です LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21769 ^ MyApp.java:5: エラー: '\u0000'は不正な文字です LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21769 ^ MyApp.java:5: エラー: '\u0000'は不正な文字です LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21769 ^ MyApp.java:5: エラー: '\u0000'は不正な文字です LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21769 ^ MyApp.java:5: エラー: '\u0000'は不正な文字です LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21769 ^ MyApp.java:5: エラー: '\u0000'は不正な文字です LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21769 ^ MyApp.java:5: エラー: '\u0000'は不正な文字です LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21769 ^ MyApp.java:5: エラー: '\u0000'は不正な文字です LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21769 ^ MyApp.java:6: エラー: '\u0000'は不正な文字です ^ MyApp.java:7: エラー: '\u0000'は不正な文字です IconResource=%SystemRoot%\system32\imageres.dll,-183 ^ MyApp.java:7: エラー: '\u0000'は不正な文字です IconResource=%SystemRoot%\system32\imageres.dll,-183 ^ MyApp.java:7: エラー: '\u0000'は不正な文字です IconResource=%SystemRoot%\system32\imageres.dll,-183 ^ MyApp.java:7: エラー: '\u0000'は不正な文字です IconResource=%SystemRoot%\system32\imageres.dll,-183 ^ MyApp.java:7: エラー: '\'は不正な文字です IconResource=%SystemRoot%\system32\imageres.dll,-183 ^ MyApp.java:7: エラー: '\u0000'は不正な文字です IconResource=%SystemRoot%\system32\imageres.dll,-183 ^ MyApp.java:7: エラー: '\'は不正な文字です IconResource=%SystemRoot%\system32\imageres.dll,-183 ^ MyApp.java:7: エラー: '\u0000'は不正な文字です IconResource=%SystemRoot%\system32\imageres.dll,-183 ^ MyApp.java:7: エラー: '\u0000'は不正な文字です IconResource=%SystemRoot%\system32\imageres.dll,-183 ^ MyApp.java:7: エラー: '\u0000'は不正な文字です IconResource=%SystemRoot%\system32\imageres.dll,-183 ^ MyApp.java:7: エラー: '\u0000'は不正な文字です IconResource=%SystemRoot%\system32\imageres.dll,-183 ^ MyApp.java:7: エラー: '\u0000'は不正な文字です IconResource=%SystemRoot%\system32\imageres.dll,-183 ^ MyApp.java:7: エラー: '\u0000'は不正な文字です IconResource=%SystemRoot%\system32\imageres.dll,-183 ^ MyApp.java:7: エラー: '\u0000'は不正な文字です IconResource=%SystemRoot%\system32\imageres.dll,-183 ^ MyApp.java:8: エラー: '\u0000'は不正な文字です ^ MyApp.java:9: エラー: '\u0000'は不正な文字です ^ エラー44個

などが繰り返し表示されてしまうのですが何がおかしいのか分からないです。

となります。レッスンでは同じ内容を入力しているので問題はないかと思うのですが。。
Macのローカル環境で作業しています。OSはcentOSを使用しています。
javaのバージョンは
openjdk version "1.8.0_151"
OpenJDK Runtime Environment (build 1.8.0_151-b12)
OpenJDK 64-Bit Server VM (build 25.151-b12, mixed mode)
となっています。

よろしければどなたかご教授をお願いいたします。
今下記の通りに記述し実行するとコンパイルできたようですが何がダメだったのかわかりません。
コンパイルの実行命令は新しく入力したものではないので特に問題ないと思っています。
public class MyApp {
public static void main(String[] args) {
System.out.println("Hello World");
}
}

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

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

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

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

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

pngnshny

2018/01/05 04:44

使用しているテキストエディタを教えていただけないでしょうか?
k-tan

2018/01/05 04:47

エディタはアトムを使用しています。環境はレッスンと全く同じ状態です。使用しているjavaのバージョンはレッスンで使用しているものよりは新しそうです。
pngnshny

2018/01/05 04:50

0xEDなどのバイナリエディタをダウンロードしてきて、テキストファイルの中身をバイナリで見ると、先頭に0000が書き込まれていないでしょうか?
k-tan

2018/01/05 05:04

申し訳ありません。0xEDを今ダウンロードしましたが、「テキストファイルの中身をバイナリで見る」の動作が上手く出来ません。
pngnshny

2018/01/05 05:12

バイナリエディタと呼ばれるものであれば何でも構いません。0xED以外でもトライするか、頑張って0xEDの使い方を調べて下さい
k-tan

2018/01/05 05:13

ありがとうございます。確認してみます。
k-tan

2018/01/05 05:26

0xEDで確認したところ、先頭の数字は00でした
pngnshny

2018/01/05 05:31

先頭にある偶数個の0を削除して、コンパイルできるようになるかを確認して見て下さい
pngnshny

2018/01/05 09:45

音沙汰無しですが、諦めたのでしょうか?
k-tan

2018/01/05 09:57

先頭の00の数字を削除できませんでしたので、次の70の数字を削除しましたがコンパイル出来ませんでした。今は別のファイルに書き方を少し変えて実行しましたがコンパイルは出来ませんでした。ただエラー数が大幅に減り、エラー38個からエラー2個に変わりました。
pngnshny

2018/01/05 10:44

starticになってますね。正しくはstaticです
k-tan

2018/01/05 10:51

ありがとうございます。最初の場合だとはstaticも変化ないので何がおかしかったのでしょうか?
pngnshny

2018/01/05 10:58

最初の場合というのは、エラー38個のことでしょうか?僕もそれは知りたいです。よろしければ、バイナリを見せていただけないでしょうか?
guest

回答2

0

ベストアンサー

java

1public class MyApp { 2 public static void main(String[] args) { 3 System.out.println("Hello World"); 4 } 5}

私の環境で上記のバイナリを見たところ、以下のようになっていました。

70 75 62 6c 69 63 20 63 6c 61 73 73 20 4d 79 41 70 70 20 7b 0a 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 76 6f 69 64 20 6d 61 69 6e 28 53 74 72 69 6e 67 5b 5d 20 61 72 67 73 29 20 7b 0a 20 20 20 20 20 20 20 20 53 79 73 74 65 6d 2e 6f 75 74 2e 70 72 69 6e 74 6c 6e 28 22 48 65 6c 6c 6f 20 57 6f 72 6c 64 22 29 3b 0a 20 20 20 20 7d 0a 7d 0a

20は空白文字を表し、最後の0aは改行を表します。質問者様のバイナリと一致するでしょうか?

投稿2018/01/05 13:09

pngnshny

総合スコア75

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

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

退会済みユーザー

退会済みユーザー

2018/01/05 13:41

\u0000 で始まるということは UTF-32(BOM)・・・
pngnshny

2018/01/05 13:54 編集

それは真ですか!?コメントありがとうございます。勉強になります。 Atomエディタで、文字コードUTF-32(BOMあり)で保存される理由が全く分かりません…。
k-tan

2018/01/06 03:59 編集

バイナリが同じでした。 私も文字コードUTF-32(BOMあり)で保存される理由が全く分からないのですが。。設定はUTF-8にしていますし。。 あと、特に設定を変えたつもりはなかったのですが、なぜコンパイルできるようになったのか不明です。
pngnshny

2018/01/06 04:01

問題の再現は難しそうですか?
k-tan

2018/01/06 04:19

最初のファイルでエラー38個の状態の時に、他にファイル名だけ変更したファイルを作りコンパイルしたものも、エラー38個と出ていたのですが、今コンパイルしてみるとすんなりできてしまいました。 何か設定が変わっているようにしか思えない状態です。 ただ最初のエラーの表示は繰り返し実行していたのでまだターミナル画面に残っています。 画面下にUTF-8と出ていましたので、エラーが大量に出ていた時もアトムの設定はUTF-8であった事は間違い無いです。
k-tan

2018/01/06 04:33 編集

初めてのコンパイル時の明細を載せました。 よく確認するとUTF-8にマップ出来ませんと表示されていました。最初のエラー数は44でした。次に同じコンパイルを行うとエラーは38になっていました。字足らずになりましたので2回目は記載しておりません
pngnshny

2018/01/06 05:04

一体何が起こっているのでしょうか…。 [.ShellClassInfo]やLocalizedResourceNameでググると、本来はWindowsのdesktop.iniに記述される内容らしいです。MacでWindowsのdesktop.iniが生成される理由もわかりませんし、それがMyApp.javaという名前で保存されている理由もわかりません…。 どこかのサイトから、desktop.iniをダウンロードした覚えはありますか?それをMyApp.javaという名前に変更した覚えは?そんなことありえませんよね…。質問者様は、本当にdotinstallの通りに実装を進めていたでしょうから。 どのように原因を特定すればいいかがわかりません。また問題が再発したときは教えていただきたいです。
k-tan

2018/01/07 05:49

わかりました。いったん締めてみたいと思います。ありがとうございました。
guest

0

こちらのエディタにコピペしたら動きましたが...なんでしょうね
public 等を全角で入力しているとかは無いですか?

投稿2018/01/05 04:45

Yhaya

総合スコア439

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

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

k-tan

2018/01/05 04:50

表記したままこちらに質問していますし、もう一度確認しましたが特に全角になっていることもありませんでした。本当に初めてレッスンを開始し、レッスンの通りに入力しただけなので困っています。
k-tan

2018/01/05 05:13

ありがとうございます。URL先の記事は消えていました。
Yhaya

2018/01/05 05:19

本当ですか,すみません。こちらのパソコンからは見れるのですが・・・
k-tan

2018/01/05 05:21

そうなのですか? Entry is not found お探しの記事は見つかりませんでした。 と表示されてしまいます。。
Yhaya

2018/01/05 05:24

最初のものはChromeで 「"\u0000"は不正な文字 java」 で検索すると一番上に出てくるものです。
Yhaya

2018/01/05 05:24

すみません、違いました。もう一度探します
Yhaya

2018/01/05 05:27

2番めのリンクの回答者様の回答をコピペさせていただきますと、 "UTF-8"でファイルを保存する場合、"BOM有り"と"BOM無し"の二種類の方法どちらかで保存されます。WINDOWS標準のメモ帳で作成・保存した場合、基本的に"BOM有り"で保存されます。  BOMとは、"Byte Order Mark"の略で、自分はUTF-8であることを示すためにファイルの頭に見えないコードを埋め込みます。過去の遺物であり、Javaコンパイルを実施する場合はこれが悪さします。"\ufeffは不正な文字です。"はBOMが引き起こす典型的なエラーです。  BOMを除去する方法ですが、「TeraPad」や「サクラエディタ」等BOMの有無を指定して保存できるエディタがいくつか存在します。それらを用いて、一旦ファイルを"BOM無し"で保存するようにしてください。そうすれば、今回のエラーも起こらなくなるかと思います。  以上、ご参考になりましたら。   こんな感じです。これがあるとjavacコマンドだとコンパイルできないけどEclipseだとできるみたいな現象が起こるようです。
k-tan

2018/01/07 05:51

ありがとうございました。BOMの設定が絡んでいるのは今回初めて知りました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問