LoginSignup
5
1

More than 5 years have passed since last update.

MSYSやCygwinでjavaを使う

Posted at

Java_Wrapper (https://ja.osdn.net/projects/javaoncygwin/) を利用して、MSYS2やCygwinでJavaを使う環境を整備します。

インストール先

インストール先は次の通りとします。

/usr/local/bin

java_wrapperをダウンロード

公式サイト からJava_Wrapperをインストール先フォルダへダウンロードします。

WindowsにJavaのパスを通しておく。

次の通りに環境変数にパスを通しておきます。

  • JAVA_HOME = JDKがインストールされているフォルダ

java_wrapperを編集する

ダウンロードしたjava_wrapperはシェルスクリプトです。
WindowsのJavaは文字コードがcp932(Shift-JIS)でエンコーディングされているので、パスを通して実行すると、MSYSやCygwin上では当然、文字化けしてしまいます。

ですので次の通りに直しておきます。

-exec "$PROGRAM" $ARGS
+exec "$PROGRAM" $ARGS 2>&1 | iconv -f cp932 -t utf-8

シンボリックリンクを作成する

インストール先フォルダへ移動した後、次のコマンドを打ちます。

$ java_wrapper createsymlinks

これで、%JAVA_HOME%\bin 内にあるすべての実行ファイルがjava_wrapperを通して実行されるようになりました。

実行してみる

実際に実行してみます。

$ java
使用方法: java [-options] class [args...]
           (クラスを実行する場合)
   または  java [-options] -jar jarfile [args...]
           (jarファイルを実行する場合)
optionsには次のものがあります。
    -d32          使用可能な場合は32ビットのデータ・モデルを使用する
    -d64          使用可能な場合は64ビットのデータ・モデルを使用する
    -server       "server" VMを選択する場合
                  デフォルトVMはserverです.

    -cp <ディレクトリおよびzip/jarファイルのクラス検索パス>
    -classpath <ディレクトリおよびzip/jarファイルのクラス検索パス>
                  クラス・ファイルを検索するディレクトリ、
                  JARアーカイブおよびZIPアーカイブの;で区切られたリストです。
    -D<name>=<value>
                  システム・プロパティを設定する
    -verbose:[class|gc|jni]
                  詳細な出力を行う
    -version      製品バージョンを出力して終了する
    -version:<value>
                  警告: この機能は非推奨であり、詳細のリリースで
                  廃止されます。
                  指定したバージョンを実行に必須にする
    -showversion  製品バージョンを出力して続行する
    -jre-restrict-search | -no-jre-restrict-search
                  警告: この機能は非推奨であり、詳細のリリースで
                  廃止されます。
                  ユーザーのプライベートJREをバージョン検索に含める/除外する
    -? -help      このヘルプ・メッセージを出力する
    -X            非標準オプションに関するヘルプを出力する
    -ea[:<packagename>...|:<classname>]
    -enableassertions[:<packagename>...|:<classname>]
                  指定した粒度でアサーションを有効にする
    -da[:<packagename>...|:<classname>]
    -disableassertions[:<packagename>...|:<classname>]
                  指定した粒度でアサーションを無効にする
    -esa | -enablesystemassertions
                  システム・アサーションを有効にする
    -dsa | -disablesystemassertions
                  システム・アサーションを無効にする
    -agentlib:<libname>[=<options>]
                  ネイティブ・エージェント・ライブラリ<libname>をロードする。例: -agentlib:hprof
                  -agentlib:jdwp=helpと-agentlib:hprof=helpも参照
    -agentpath:<pathname>[=<options>]
                  フルパス名でネイティブ・エージェント・ライブラリをロードする
    -javaagent:<jarpath>[=<options>]
                  Javaプログラミング言語エージェントをロードする。java.lang.instrumentを参照
    -splash:<imagepath>
                  指定したイメージでスプラッシュ画面を表示する
詳細はhttp://www.oracle.com/technetwork/java/javase/documentation/index.htmlを参照してください。

文字化けすることなくJavaを呼び出すことができました。

$ javac
使用方法: javac <options> <source files>
使用可能なオプションには次のものがあります。
  -g                         すべてのデバッグ情報を生成する
  -g:none                    デバッグ情報を生成しない
  -g:{lines,vars,source}     いくつかのデバッグ情報のみを生成する
  -nowarn                    警告を発生させない
  -verbose                   コンパイラの動作についてメッセージを出力する
  -deprecation               非推奨のAPIが使用されているソースの場所を出力する
  -classpath <path>          ユーザー・クラス・ファイルおよび注釈プロセッサを検索する位置を指定する
  -cp <path>                 ユーザー・クラス・ファイルおよび注釈プロセッサを検索する位置を指定する
  -sourcepath <path>         入力ソース・ファイルを検索する位置を指定する
  -bootclasspath <path>      ブートストラップ・クラス・パスの場所をオーバーライドする
  -extdirs <dirs>            インストール済拡張機能の場所をオーバーライドする
  -endorseddirs <dirs>       推奨規格パスの場所をオーバーライドする
  -proc:{none,only}          注釈処理やコンパイルを実行するかどうかを制御します。
  -processor <class1>[,<class2>,<class3>...] 実行する注釈プロセッサの名前。デフォルトの検出処理をバイパス
  -processorpath <path>      注釈プロセッサを検索する位置を指定する
  -parameters                メソッド・パラメータにリフレクション用のメタデータを生成します
  -d <directory>             生成されたクラス・ファイルを格納する位置を指定する
  -s <directory>             生成されたソース・ファイルを格納する場所を指定する
  -h <directory>             生成されたネイティブ・ヘッダー・ファイルを格納する場所を指定する
  -implicit:{none,class}     暗黙的に参照されるファイルについてクラス・ファイルを生成するかどうかを指定する
  -encoding <encoding>       ソース・ファイルが使用する文字エンコーディングを指定する
  -source <release>          指定されたリリースとソースの互換性を保つ
  -target <release>          特定のVMバージョン用のクラス・ファイルを生成する
  -profile <profile>         使用されているAPIが指定したプロファイルで使用可能かどうかを確認します
  -version                   バージョン情報
  -help                      標準オプションの概要を出力する
  -Akey[=value]              注釈プロセッサに渡されるオプション
  -X                         非標準オプションの概要を出力する
  -J<flag>                   <flag>を実行システムに直接渡す
  -Werror                    警告が発生した場合にコンパイルを終了する
  @<filename>                ファイルからの読取りオプションおよびファイル名


javacも文字化けすることなく呼び出せました。

参考サイト

5
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
1