読者です 読者をやめる 読者になる 読者になる

5000兆円ください。

生産性の無い情報を発信しています。5000兆円くれると喜びます。

『javac: ファイルではありません』、奇妙なエラーが出たので解説。

技術情報

なぜかTwitterで私にDMを送ってきた人(以下D君)にJavaを教えることになったので、JDKの導入手順や環境変数の設定方法などを説明していました。

 

そしてjavacコマンドが正常に動作したところで、ひとまずおなじみの"HelloWorld"ソースコードを書き、コマンドプロンプト(ターミナル)上で実行する方法を伝授することにしました。

 

そこで事件は起こりました。

D君が一生懸命書いた"HelloWorld"を出力するHello.javaを javacコマンドでコンパイルしようとすると、

f:id:Q_tyokinuhata:20160321051029p:plain

このようなエラーが出たというのです。

 

もちろん私の環境では動作していたので、なぜ?という感じでした(TwitterのDM上でのやり取りのため、相手が本当に正しいことをしているのかが伝わりにくい)。

「javac: ファイルが見つかりません」のエラーはまだ見かけますが、「javac: ファイルではありません」は、はじめてでした。

 

なにか解決策はないか、とTwitterで嘆いていると、ノエルちゃん(@nf_shirosawa)からヒントになりそうなリプライ(というかほぼ答え)をいただきました。

そう、Windowsなどの一部のOSでは設定により、拡張子が隠れているのです。 

 

 つまり、こういうことだったのです↓

 

まず、Dくんのディレクトの中身はこんな感じでした(あくまで私による再現です)。

f:id:Q_tyokinuhata:20160321054314p:plain

同じ名前が同じ階層に存在すること自体もおかしいのですが、見落としていたのか私はそのことに気付きませんでした。

 

そして、いざ拡張子を表示してみると、javaファイルだと思っていたファイルはただのtxtファイルじゃありませんか。

f:id:Q_tyokinuhata:20160321055113p:plain

 

つまりコンパイルしていたのはディレクトリのHello.javaで、「これはファイルじゃなくてディレクトリだよカス」というエラーだったんですね。

 

ググっても該当する記事がなかったので戸惑いましたが、解決できてよかったです。

このエラーを次に吐く人は何年後なのか分かりませんが、この記事が少しでも役に立てばと思います。

眠いので日本語不自由な記事になってしまいました。

それでは、本日はこのへんで。

 

Windows7拡張子を表示/非表示する方法

www.microsoft.com

をお読みください。