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

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

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

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

Q&A

解決済

5回答

2357閲覧

コマンドプロンプトのコンパイルエラー

H30_inenaga

総合スコア18

Java

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

0グッド

0クリップ

投稿2018/10/24 07:03

編集2018/10/27 16:04

###解決したい課題
コマンドプロンプトに表示されるエラーについて助言が欲しいです。
その助言により、エラーがなくなりましたらベストアンサーにします。

###やっていること
ChatServer.javaを作成し、コンパイルして実行する段階。

###ChatServer.java(エラーが出たソースコード)

java

1import java.io.*; 2import java.net.*; 3import java.util.*; 4 5//チャットサーバ 6public class ChatServer { 7 8 //開始 9 public void start(int port) { 10 ServerSocket server;//サーバソケット 11 Socket socket;//ソケット 12 ChatServerThread thread;//スレッド 13 14 try { 15 server = new ServerSocket(port); 16 System.err.println("ChatServer start"+ 17 "\nIP Address:"+InetAddress.getLocalHost().getHostAddress()+ 18 "\nPort:"+port); 19 while(true) { 20 try { 21 //接続待機 22 socket = server.accept(); 23 24 //チャットサーバスレッド開始 25 thread = new ChatServerThread(socket); 26 thread.start(); 27 } catch (IOException e) { 28 } 29 } 30 } catch (IOException e) { 31 System.err.println(e); 32 } 33 } 34 35 //メイン 36 public static void main(String[] args) { 37 ChatServer server = new ChatServer(); 38 server.start(80); 39 } 40}

###コマンド上でコンパイルする際、表示されるエラーメッセージ
C:\Users\●●\Downloads\sample\sample\ch6\SocketEx_server>javac ChatServer.java
ChatServer.java:1: エラー: この文字(0xEF)は、エンコーディングwindows-31jにマップできません
?サソimport java.io.;
^
ChatServer.java:5: エラー: この文字(0x83)は、エンコーディングwindows-31jにマップできません
//繝√Ε繝?繝医し繝シ繝?
^
ChatServer.java:5: エラー: この文字(0x90)は、エンコーディングwindows-31jにマップできません
//繝√Ε繝?繝医し繝シ繝?
^
ChatServer.java:8: エラー: この文字(0x8B)は、エンコーディングwindows-31jにマップできません
//髢句ァ?
^
ChatServer.java:10: エラー: この文字(0x83)は、エンコーディングwindows-31jにマップできません
ServerSocket server;//繧オ繝シ繝舌た繧ア繝?繝?
^
ChatServer.java:10: エラー: この文字(0x88)は、エンコーディングwindows-31jにマップできません
ServerSocket server;//繧オ繝シ繝舌た繧ア繝?繝?
^
ChatServer.java:11: エラー: この文字(0x83)は、エンコーディングwindows-31jにマップできません
Socket socket;//繧ス繧ア繝?繝?
^
ChatServer.java:11: エラー: この文字(0x88)は、エンコーディングwindows-31jにマップできません
Socket socket;//繧ス繧ア繝?繝?
^
ChatServer.java:12: エラー: この文字(0x83)は、エンコーディングwindows-31jにマップできません
ChatServerThread thread;//繧ケ繝ャ繝?繝?
^
ChatServer.java:12: エラー: この文字(0x89)は、エンコーディングwindows-31jにマップできません
ChatServerThread thread;//繧ケ繝ャ繝?繝?
^
ChatServer.java:21: エラー: この文字(0x85)は、エンコーディングwindows-31jにマップできません
//謗・邯壼セ?讖?
^
ChatServer.java:21: エラー: この文字(0x9F)は、エンコーディングwindows-31jにマップできません
//謗・邯壼セ?讖?
^
ChatServer.java:24: エラー: この文字(0x83)は、エンコーディングwindows-31jにマップできません
//繝√Ε繝?繝医し繝シ繝舌せ繝ャ繝?繝蛾幕蟋?
^
ChatServer.java:24: エラー: この文字(0x83)は、エンコーディングwindows-31jにマップできません
//繝√Ε繝?繝医し繝シ繝舌せ繝ャ繝?繝蛾幕蟋?
^
ChatServer.java:24: エラー: この文字(0x8B)は、エンコーディングwindows-31jにマップできません
//繝√Ε繝?繝医し繝シ繝舌せ繝ャ繝?繝蛾幕蟋?
^
ChatServer.java:1: エラー: class、interfaceまたはenumがありません
?サソimport java.io.
;

エラー16個

###やってみたこと
おそらくコメントしている文字の問題?と考え、コメントしている箇所を削除しました。すると、エラーが下記のようになり(減り)ました。

ChatServer.java:1: エラー: この文字(0xEF)は、エンコーディングwindows-31jにマップできません
?サソimport java.io.;
^
ChatServer.java:1: エラー: class、interfaceまたはenumがありません
?サソimport java.io.
;
^
エラー2個

これは何が原因でしょうか?

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

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

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

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

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

keicha_hrs

2018/10/24 10:10

Android Studioのタグがついていますが、関係なさそうですが。
H30_inenaga

2018/10/24 15:42

AndroidStudioアプリの本に掲載されていたソースコードですが、関係ないものでしたか?
keicha_hrs

2018/10/25 03:12

この質問にあるソースコードの記述、コンパイル、実行の一連の作業にAndroid Studioを利用する必然性がなければ「関係ありません」。
H30_inenaga

2018/10/26 13:40

承知しました。消し方は、どうやりますか?
keicha_hrs

2018/10/26 15:21

質問の編集ボタンを押して、編集画面でタイトルの下に表示されているタグを×ボタンをクリックして消去し、編集完了すればいいでしょう。
H30_inenaga

2018/10/27 16:05

教えていただき、ありがとうございます。
guest

回答5

0

メモ帳を使うなら、"名前を付けて保存"を選んで、ダイアログの文字コードの欄からANSIを選び、同じファイル名で上書き保存してみましょう。

メモ帳はプログラミングには向きません。別のエディターを導入した方がいいでしょう。
窓の杜ライブラリ テキストエディター
窓の杜ライブラリ プログラム向けエディター

投稿2018/10/26 15:44

keicha_hrs

総合スコア6766

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

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

H30_inenaga

2018/10/27 16:42

おっしゃることをやってみて、コンパイルをしてみたところ、やはりエラーでした。 ChatServer.java:39: エラー: class、interfaceまたはenumがありません } ^ エラー1個 質問時のエラーは解決されているようなので、文字自体は問題なさそうなのですが、まだまだエラーがあることが分かりました。 別のエディターは、詳しくないのでもう少し調べてみたいと思います。
H30_inenaga

2018/10/29 15:05

keicha_hrs 様 紹介いただいた、URLからCode Writer をインストールし、質問に掲載したソースコードを開いて、下の緑ラインのエンコーディング部分をAutoからISO-2022-JP:jp(JIS)に変更したところ、解決しました! ただ、コンパイル時には、質問に掲載したソースコードだけでなく、もう1つのChatServerThread.javaも同じようにエンコーディングが必要でした。 お礼申し上げます。
guest

0

自己解決

紹介いただいた、URLからCode Writer をインストールし、質問に掲載したソースコードを開いて、下の黄緑ラインのエンコーディング部分(写真のCRLFの左)をAutoからISO-2022-JP:jp(JIS)に変更したところ、解決しました!
ただ、コンパイル時には、質問に掲載したソースコードだけでなく、もう1つのChatServerThread.javaも同じようにエンコーディングが必要でした。
※質問に掲載したソースコードは、Code Writerによると、最後の"}"が要らなかったようです。
回答下さいました皆様、お礼申し上げます。

イメージ説明

投稿2018/10/29 15:09

編集2018/10/29 15:26
H30_inenaga

総合スコア18

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

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

0

javacには-encodingオプションがあるので、適切な文字コードを指定してみるとどうでしょうか。

投稿2018/10/24 08:09

dice142

総合スコア5158

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

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

H30_inenaga

2018/10/26 13:41

-encodingを入力したところ、 '-encoding' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。 とエラーメッセージが出ました。
dice142

2018/10/27 00:20

-encodingはjavacのオプションです。javacのオプションとして使ってください。
guest

0

そのエラーが出ているところに全角の空白が入ってませんか
半角の空白にしときましょう

投稿2018/10/24 07:06

y_waiwai

総合スコア87719

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

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

H30_inenaga

2018/10/24 08:05

それでも、エラーは消えませんでした…
y_waiwai

2018/10/24 08:20

どういうエラーでしょうか。 全く同じエラーではないですよね?
H30_inenaga

2018/10/24 15:07

まったく同じエラーでしたので他に原因があるのかなと思います。
H30_inenaga

2018/10/24 15:47

そもそも、メモ帳で開く限り、空白がないんです。
guest

0

先頭に、UTF-8のBOMと呼ばれる文字が残っています。そして、「Windows-31J」は、「Windows用のシフトJIS」の別名です。

現状の環境でコンパイルを通すには、シフトJISでファイルを保存し直してください。

投稿2018/10/24 07:06

maisumakun

総合スコア145121

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

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

H30_inenaga

2018/10/24 08:07

>シフトJISでファイルを保存し直し このキーワードをもとに調べてみましたが、有用な情報を判別できませんでした。 このソースコードは、メモ帳で開いております。 どのようにしてファイルを保存し直すか教えていただけないでしょうか。
maisumakun

2018/10/24 08:09

メモ帳ではなく、文字コードを確認・変更できるエディタを使ってください。
H30_inenaga

2018/10/24 15:45

https://uxmilk.jp/47131 上記のURL、Internet Explorerで確認する方法を試し、エンコードまで問題なく出来ました。 この後、Altキーを押して、名前をつけて保存しようとすると、ChatServer_java.mhtで保存しようとします。 コンパイルのためには、拡張子を.mhtから.javaにする必要がある?と思うのでつまづいております。
H30_inenaga

2018/10/26 13:42

やり方をご教授いただけないでしょうか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問