Windows 版 Eclipse で作った複数の Java ソースファイルを Mac でコンパイルするシェルスクリプトを作ってみた
目次
この記事を書いた背景
Windows 版の Eclipse は、標準でソースコードが BOM 付きの UTF-8 形式で保存される仕様です。
これは別に仕様なので仕方がないのですが、先日研修系の仕事でたくさんのソースを扱うことがあり、かつコンパイル環境が Mac のときに問題が起こりました。
Mac 版の javac は BOM が付いているとコンパイルできないのです。
少なくとも自分がリファレンス読んだ限りではオプションなども見つかりませんでした。
これだと動作チェックもできないので、なんとかコンパイルできるようにしたいと思ってやったことのメモです。
解決方法
解決するには BOM を削るしかありませんでした。
つまり、ソースコードを編集するということですね。
そのために作ったシェルスクリプトが次のものです。
ソースコードは「JavaProgram.java」で統一されており、
1つずつ「5xxxx」というディレクトリに保存されている前提です。
#!/bin/sh
for dirname in `ls -d * | grep -G ^5`
do
cd $dirname
# ソースファイルからBOMを削除
awk 'NR==1{sub(/^\xef\xbb\xbf/,"")}{print}' JavaProgram.java > JavaProgram_out.java
# 一時ファイルの削除
rm JavaProgram.java
# BOM削除済みファイルのリネーム
mv JavaProgram_out.java JavaProgram.java
# コンパイル
javac -J-Dfile.encoding=UTF-8 JavaProgram.java
# 実行
java -Dfile.encoding=UTF-8 JavaProgram
cd ..
done
以下ソースコードの解説です。
全体のループ
for dirname in `ls -d * | grep -G ^5`
do
〜
done
for によって全体をループさせています。
ディレクトリは「dirname」変数に入れています。
`ls -d * | grep -G ^5`
ディレクトリの取得は、
「ls -d *」で項目名のみに絞った一覧を作成し、
「grep -G ^5`」で先頭文字列が「5」のものだけに絞りました。
BOM の削除
awk 'NR==1{sub(/^xefxbbxbf/,"")}{print}' JavaProgram.java > JavaProgram_out.java
rm JavaProgram.java
mv JavaProgram_out.java JavaProgram.java
BOM の削除は awk を使っています。
awk で先頭3バイトが「EFBBBF」であれば削除し、「JavaProgram_out.java」に書き出します。
「rm JavaProgram.java」で元ファイルを削除し、
「mv JavaProgram_out.java JavaProgram.java」で awk を通して書き出したファイルを元のナマエに戻しています。
あとはコンパイルして実行しています。
まとめ
UTF-8 を使うなら、BOM 対応ぐらいはして欲しいものです。。
10年集客し続けられるサイトを、ワードプレスで自作する9つのポイント プレゼント
あなたは、24時間365日、自分の代わりに集客し続けてくれるWebサイトを作りたい!と思ったことはありませんか?
私はこれまで500以上のWebサイトの構築と運営のご相談に乗ってきましたが、Webサイトを作ってもうまく集客できない人には、ある一つの特徴があります。
それは、「先を見越してサイトを構築していないこと」です。
Webサイトで集客するためには、構築ではなく「どう運用するか」が重要です。
しかし、重要なポイントを知らずにサイトを自分で構築したり、業者に頼んで作ってもらってしまうと、あとから全く集客に向いていないサイトになっていたということがよく起こります。
そこで今回、期間限定で
『10年集客し続けられるサイトをワードプレスで自作する9つのポイント』
について、過去に相談に乗ってきた具体的な失敗事例と成功事例を元にしてお伝えします。
・ワードプレスを使いこなせるコツを知りたい!
・自分にピッタリのサーバーを撰びたい!
・無料ブログとの違いを知りたい!
・あとで悔しくならない初期設定をしておきたい!
・プラグイン選びの方法を知っておきたい!
・SEO対策をワードプレスで行うポイントを知りたい!
・自分でデザインできる方法を知りたい!
という方は今すぐ無料でダウンロードしてください。
期間限定で、無料公開しています。
※登録後に表示される利用条件に沿ってご利用ください