Javaと情熱のあいだ

カステラとドーナツと珈琲

Trac Lightningを使う

Trac月ことTrac Lightningを使ってみた。
インストールが終了してsubclipseリポジトリを追加したら
Eclipseがプツンと落ちたので原因を調べてみるとJavaHLで使ってる
dllが原因らしい。
てくめも@coopさんに書いてあったけど
なんか見れないので、キャッシュからメモ。

EclipseSVN 利用時 JavaHL にすると強制終了する時のトラブルシューティング[Eclipse][Subversion]
Eclipse 3.3, Subversive または Subclipse を利用し、Apache2.2 用 Subversion 1.4.5 をインストールした環境でローカルで使っていたところ、SVN リポジトリへのアクセスが発生すると、黙って Eclipse が落ちる、という現象が発生しました。プライマリなパースペクティブが SVN リポジトリにアクセスするものだと Eclipse が全く起動しなくなったり…

調べてみたところ、結論として、パスが通る場所(PATH で指定されている場所)に libapr-1.dll があり、libapr-1.dll と eclipse/plugin/*javahl* にある libjavahl-1.dll の(Apache の)バージョンが異なる場合に JavaHL を呼び出した瞬間に Eclipse が落ちるようです。

以下のいずれかの方法で対策できます。
(A) Subversion をアンインストールするか、PATH から /bin を外す
(B) Apache2.2 用でなく Apache 2.0 用 Subversion (1.4.x) をインストールする
(C) plugin/*javahl*_X.X.X にあるすべての DLL を、使いたい Subversion の DLL にまるごと置き換える
(D) JavaHL でなく SVNKit など PureJava 実装の SVN コネクタを使う。

C の案を採用する場合、Subversive なら

eclipse\plugins\org.polarion.team.svn.client.javahl_1.1.*

Subclipse なら

eclipse\plugins\org.tigris.subversion.javahl.win32_1.2.*

に、それぞれのプラグインで使われている JavaHL の DLL があります。

また、置き換える DLL は Subversion ダウンロードページからダウンロードした svn-win32-1.4.*_javahl.zip の中の

javahl/libsvnjavahl-1.dll
bin/*.dll

です。

追記:

  • 2007-10-26: (C)の案でSubversive についてのみ書いていましたが、本日 Subclipse にして再発したため、再調査の上加筆修正しました。

そのあと、SVNKitを使ってみたら

CHECKOUT request failed on '/svn/test/!svn/ver/0/'
CHECKOUT of '/svn/test/!svn/ver/0/': 400 Bad Request (http://localhost)

とエラーメッセージが出てリポジトリは追加できたけどプロジェクトの追加ができない・・・。
こっちも調べてみると、Apacheの設定が原因らしい。
ZOETROPEの日記さんに解決方法が書いてあったので試してみると追加できた。
こっちもメモ

svn: PROPFIND request failed on 'http://localhost/svn/HogeProject

svn: PROPFIND of 'http://localhost/svn/HogeProject’: Could not read status line:

となってしまいます。

どうやらApacheの認証のところで問題があるようなので、TracLight\apache2\conf\httpd.confを開いて、以下の箇所をコメントアウトしてみました。

DAV svn

SVNParentPath "C:\TracLight\projects\svn"

# AuthType Digest

# AuthName trac

# AuthDigestFile "C:\TracLight\projects\trac.htdigest"

# Require valid-user

# AuthzSVNAccessFile "C:\TracLight\projects\svnauthz"

これで、Apacheを再起動すると、一応、リポジトリにアクセスできます。Digest認証に問題あり?

外に公開するわけじゃないのでこのままでもいいんだけど。うーん、ちゃんと調べるべきかなぁ・・・

エラーメッセージは違うけど同じ設定で動いたのでローカルで使う分には問題なさそう。
追記:上記の設定をすると、SVNKitは使用できるがユーザ管理を解除した状態となるため
問題の根本解決になっていない。そこで更に調べて見ると解決方法を発見した。

SVNKitからorg.tmatesoft.svn_1.1.6.standalone.zipを
ダウンロード、解凍して中にあるsvnkit.jarを
eclipse\configuration\org.eclipse.osgi\bundles\211\1\.cp\lib\svnkit.jar
に上書きする。

これだけで、ユーザ管理をしてても問題なくSVNKitを使うことが出来る。
気になってたことが解決したので安心して眠れそう。