スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

IntelliJ IDEAのプロファイル情報が変な場所に出力される問題 (Windows7)

最近地味に嵌ってしまったので紹介しておきます。

まれにですが、Windows7において IntelliJ IDEAのプロファイル情報が「C:\Windows\System32\config\systemprofile\.IntelliJIdea11」に作成されてしまう場合があります。
(今回の私の例だと、ParallelsをParallels8へバージョンアップし、Parallels Toolsをインストールした際に発生しました)

最初はParallelsの問題かと思いましたが
通常のWindows Updateでも起こりうる問題のようです。

具体的には以下の記事にも紹介されております。
http://pub.ne.jp/pchitorigoto/?entry_id=2540991


これの何が問題なのかと言いますと、Systemディレクトリ配下に作成されてしまうので、管理者権限でないと閲覧できないディレクトリやファイルが出来てしまうのです。そのため、Tomcatの起動時に server.xml を読み込むこと失敗して起動できないなどの事象が発生します。IntelliJ IDEAを管理者権限で実行しても読み込めないので、このままだと使い物になりません。


この事象が発生するとき、
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\
が作成されており、これのDesktopの値が「C:\Windows\System32\config\systemprofile\Desktop」になっているために発生しているようです。
この値を「C:\Users\(ログインユーザ)\Desktop」へ書き換えても一時的に直るのですが、レジストリエディタを再起動するとまた復元されてしまいます。

そもそも本来であれば、
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders]
を読み込むのですが、

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders]
があると、ここにある値を優先的に読み込んでしまうようです。

なので、
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders]
を削除します。

これにより、ログインユーザのプロファイルディレクトリへIntelliJ IDEAのプロファイル情報が作成されるようになります。(既にディレクトリがある場合はその情報を読み込むようになります)
スポンサーサイト

IntelliJ IDEA 11におけるリソースファイルの扱い

Javaにおいて、クラスパスへ配置されるリソースファイルの扱いについてです。

Eclipseにおいてはビルドパスの設定からクラスパスへのエクスポートする対象のディレクトリを指定することが出来、指定されたディレクトリの中身がそのままクラスパスへとコピーされるように設定出来ます。IntelliJ IDEAにおいてもこれは同じ・・・と思っていると、アプリが動かないなんていう自体に見舞われます。

簡単にいうと、IntelliJ IDEAではクラスパスへ配置されるリソースファイルは拡張子によって対象を選別しており、デフォルト設定だとすべてのファイルをコピーしてくれないようになっています。
ちなみにデフォルトだと以下のとおりです。

IntelliJ IDEA - resource 01

上記は設定(Winだと「File」→「Settings」、Macだと「IntelliJ IDEA」→「Preferences」)の「Compiler」項目を選択すると表示される画面になります。
比較的よく使われるファイルが対象となっていますが、
*.vmのようなファイルはありませんね。

このように、1つ1つ対象を設定していくのは非常に面倒なので、以下のように指定してEclipseと同じようにすべてのファイルをコピー対象とします。

IntelliJ IDEA - resource 02

これですべてのリソースファイルをクラスパスへコピーしてくれるようになります。

IntelliJ IDEAはとにかくデフォルト設定がかなり微妙です。
シンタックスカラーもデフォルトだと暗めな色ばかりで少々気持ち悪いです。
そんなわけで、次回は Eclipse に似せたシンタックスカラー設定を公開したいと思います。

IntelliJ IDEA 11における properties ファイルの reverse 表示

propertiesファイルはご存知の通り
日本語などのマルチバイト文字をUnicodeエスケープ形式で直接書き込むファイル形式です。
これにより、ASCII文字のみでUTF-8な文字を表現できるようになるため、
ファイル自体の文字コードは「ISO-8859-1」で記述するのが一般的になっています。

IntelliJ IDEA - properties 01
↑このような感じでマルチバイト文字をUnicodeエスケープ形式で記述する

マルチバイト文字をUnicodeエスケープ形式に変換するツール「native2ascii」がJDKに付属しており、Eclipseだと「プロパティエディタ」などのプラグインが自動で変換してくれます。
これは本来だと上記のようなUnicodeエスケープ形式で記述されているファイルを、日本語表示に戻して表示&編集することが出来、保存時には native2ascii で自動的に変換して保存するといった感じです。つまり、あたかも元から日本語で記述されているように編集することが出来るわけです。
(このUnicodeエスケープ形式からマルチバイト文字へ変換することを、俗に「ascii2native」とも表現することがあります。実際は、native2asciiツールを利用すると -reverse というオプションを利用してこれを実現するため、このブログでは reverse 表示と呼んでおきます)

IntelliJ IDEAではこれを標準でサポートしているのですが、デフォルトでは設定が無効になっているばかりか、その設定項目がわかりづらい箇所にあるため紹介しておきます。

01. 「File」→「Reload 'XXXX' file in another encoding」→「Configure Default Encoding」へ遷移 (※「XXXX」は文字コードが入る)
02. 「Transparent native-to-ascii conversion」チェックボックスにチェックを付ける


または

01. Winでは「Settings」、Macでは「Preferences」の「File Encodings」へ遷移
02. 「Transparent native-to-ascii conversion」チェックボックスにチェックを付ける


IntelliJ IDEA - properties 02


これで以下のようにEclipseのプロパティエディタと同様に、裏で native2ascii と reverse を行ってくれるようになります。

IntelliJ IDEA - properties 03

IntelliJ IDEAでMercurialのコミットログが文字化けする問題への対処

主にMacにおける話ですが、
IntelliJ IDEA上でMercurialのコミットログを表示したとき、
日本語の文字化けが起こる場合があります。
こんな感じです。

IntelliJ IDEA - Mercurialログ (文字化け)

これはMercurialの文字コードが設定されていない場合に起きます。
なので、環境変数に以下の項目を追加してあげる必要があります。

export HGENCODING=UTF-8


但し、これだけではIntelliJ IDEAは環境変数を読み込んでくれません。
IntelliJ IDEAの設定から「Version Control」→「Mercurial」の画面を表示し、
以下の設定を行う必要があります。

IntelliJ IDEA - Mercurial設定

この「Run hg as 'bash -c <path to hg>'」にチェックを付ける必要があります。
このチェックを行うことで環境変数を読み込み、以下のようにコミットログが日本語で表示されるようになります。

IntelliJ IDEA - Mercurialログ

1点注意として、この設定は bash の設定ファイルから環境変数を読み込みますので、例えばzshを使っている場合に .zshrc に環境変数を記述してもそれは読み込んでくれません。
必ず .bashrc か .bash_profile に記述するようにしましょう。

IntelliJ IDEA 11を使う

最近はモバイルアプリケーションよりもWebアプリケーションを組むことが多いのですが、Eclipseを使っているととにかく重くてイライラしてしまいます。
思えばEclipseは昔から重い重いと言われ続けてきました。
マシンスペックが高くなった最近のパソコンでも重いです。
最早根本的な設計に何か問題があるような気がしてならないわけですが、
そのような背景もあって最近はJetBrains社の「IntelliJ IDEA」を使うようになりました。

IntelliJ IDEAはEclipseと比べてとにかく軽いのと、
これ1つでWebアプリで使う殆どの言語をサポートしています。
(Androidプログラムもサポートしています)
またコード補完も優秀です。

機能的にはどれもEclipseにある機能なのですが、
それらのほとんどがEclipseよりも使いやすくなっており、そして軽いというのが利点です。
Googleのエンジニアもこれを使っているみたいですね。


但し、メニュー表示などは全て英語で、
ちゃんと設定をしないと日本語表示が出ないで文字化けする場合があります。
今回は必要な設定について少し紹介してみます。


Windowsで利用する場合

Macで利用する場合はデフォルトエンコーディングがUTF-8なのであまり意識しなくてもよいですが、
WindowsはデフォルトエンコーディングがWindows-31J(MS932, CP932)なので
これが悪さをしてTomcatの実行ログの日本語が文字化けを起こします。
これはIntelliJ IDEAの実行ファイルのVM Optionファイルや、TomcatのVM Optionに「-Dfile.encoding=UTF-8」を指定したとしても文字化けします。

IntelliJ IDEAではTomcatの出力ログの文字コードはOSのデフォルトエンコーディングで出力しているようで、特に設定項目もありません。
なので、環境変数に以下の値を追加して強制的にUTF-8を利用するようにしてあげます。

_JAVA_OPTIONS=-Dfile.encoding=UTF-8



これでTomcatログの文字化けがなくなります。


Eclipseに比べると日本語まわりで若干不都合が出る場合がありますが、
その辺と上手く付き合っていけばかなり生産性を向上させられるIDEだと思いますので
興味のある方は一度使ってみるといいかも知れません。
CE版は無料なので、こちら↓からダウンロードしてみましょう。
http://www.jetbrains.com/idea/
プロフィール

Kou

Author:Kou
モバイル関連の開発ばかりやってる人のブログです。たまにWebもやります。

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QR
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。