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

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

ただいまの
回答率

91.06%

  • Java

    11783questions

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

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

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 267

k-tan

score 7

ドットインストールで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");
}
}

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • pngnshny

    2018/01/05 19:44

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

    キャンセル

  • k-tan

    2018/01/05 19:51

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

    キャンセル

  • pngnshny

    2018/01/05 19:58

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

    キャンセル

回答 2

checkベストアンサー

0

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

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

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 22:41

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

    キャンセル

  • 2018/01/05 22:54 編集

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

    キャンセル

  • 2018/01/05 23:01 編集

    1バイトのダミーファイルを新規作成しそれを編集しない限り、あの一つ目のエラーはでないとおもうのよ・・・

    ちなみに UTF-32 ビッグエンディアン のBOMをみると
    「0x00 0x00 0xFE 0xFF」らしい

    https://ja.wikipedia.org/wiki/バイトオーダーマーク
    https://ja.wikipedia.org/wiki/UTF-32

    キャンセル

  • 2018/01/06 12:59 編集

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

    キャンセル

  • 2018/01/06 13:01

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

    キャンセル

  • 2018/01/06 13:19

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

    キャンセル

  • 2018/01/06 13:33 編集

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

    キャンセル

  • 2018/01/06 14:04

    一体何が起こっているのでしょうか…。

    [.ShellClassInfo]やLocalizedResourceNameでググると、本来はWindowsのdesktop.iniに記述される内容らしいです。MacでWindowsのdesktop.iniが生成される理由もわかりませんし、それがMyApp.javaという名前で保存されている理由もわかりません…。

    どこかのサイトから、desktop.iniをダウンロードした覚えはありますか?それをMyApp.javaという名前に変更した覚えは?そんなことありえませんよね…。質問者様は、本当にdotinstallの通りに実装を進めていたでしょうから。

    どのように原因を特定すればいいかがわかりません。また問題が再発したときは教えていただきたいです。

    キャンセル

  • 2018/01/07 14:49

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

    キャンセル

0

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/01/05 13:50

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

    キャンセル

  • 2018/01/05 13:58

    エラーが再現できないのでなんとも言えませんが、以下のサイトが参考になるかもしれません。
    http://monokurotamago.hatenablog.com/entry/2014/03/01/151724
    https://okwave.jp/qa/q8993964.html

    キャンセル

  • 2018/01/05 14:13

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

    キャンセル

  • 2018/01/05 14:19

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

    キャンセル

  • 2018/01/05 14:21

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

    キャンセル

  • 2018/01/05 14:24

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

    キャンセル

  • 2018/01/05 14:24

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

    キャンセル

  • 2018/01/05 14:27

    2番めのリンクの回答者様の回答をコピペさせていただきますと、

    "UTF-8"でファイルを保存する場合、"BOM有り"と"BOM無し"の二種類の方法どちらかで保存されます。WINDOWS標準のメモ帳で作成・保存した場合、基本的に"BOM有り"で保存されます。

     BOMとは、"Byte Order Mark"の略で、自分はUTF-8であることを示すためにファイルの頭に見えないコードを埋め込みます。過去の遺物であり、Javaコンパイルを実施する場合はこれが悪さします。"\ufeffは不正な文字です。"はBOMが引き起こす典型的なエラーです。

     BOMを除去する方法ですが、「TeraPad」や「サクラエディタ」等BOMの有無を指定して保存できるエディタがいくつか存在します。それらを用いて、一旦ファイルを"BOM無し"で保存するようにしてください。そうすれば、今回のエラーも起こらなくなるかと思います。

     以上、ご参考になりましたら。
     
    こんな感じです。これがあるとjavacコマンドだとコンパイルできないけどEclipseだとできるみたいな現象が起こるようです。

    キャンセル

  • 2018/01/07 14:51

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

    キャンセル

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

  • ただいまの回答率 91.06%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

  • 受付中

    JAVAに関する質問

    JAVAに関する質問です。 JAVAで以下のプログラムを作成しました。 import java.util.Scanner;  public class Sample {  /

  • 解決済

    Enumの使い方

    プログラム中にあるマジックナンバーを理解できる形に直そうと思いEnumを使おうとしているのですが、Enumの使い方がわかりません。 例えばプログラムで if (sum >= 50)

  • 解決済

    メソッドを使ったプログラムを作りたいです

    前提・実現したいこと Javaのメソッドを使う問題を解いています。 問題は以下の通りです。 ↓ 好物を元に動物の名前と特徴を出力するプログラム  ・作成するクラス 

  • 解決済

    JavaのClassクラスについて

    JavaのClassクラスについての質問です。 これを参考にしました。 http://qiita.com/SHOSI/items/ea713e6205257ab8617b

  • 解決済

    Javaのprintlnで、特殊記号☆や♪ってどうやって表現しますか?

    windows10でeclipseを用いて、javaの勉強をしています。 System.out.println("Hello world!"); で、 Hello, wo

  • 解決済

    javaの演算子に関する質問です。

    キーボードから読み込んだ整数値に10を加えた値と,10減らした数を表示するプログラムを作っています。一応プログラムは完成したのですがコンパイルエラーになります。なぜでしょうか??プ

  • 受付中

    Javaで外部プロセスの出力がうまく取得できません

    JavaでProcessBuilderを利用してPerlを実行しているのですが、うまく出力ができません。 具体的には、今次のようなPerlのプログラムをJavaで動かしています。

  • 解決済

    【Java】普通とは異なる半角スペースを置換する方法

    Javaで半角スペースを置換する方法を教えてください。 添付画像の上段の20というのが普段利用する半角スペースです。 今回は下段の e2 80 a8 というバイトコードの半

同じタグがついた質問を見る

  • Java

    11783questions

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