dllが必要なテストをmaven2で実行する

dllを含んだディレクトリをworkingDirectoryに設定することでとりあえず実行することができるようになった。以下pom.xmlの断片。

<build>
  <plugins>
    <plugin>
      <artifactId>maven-surefire-plugin</artifactId>
      <configuration>
        <forkMode>once</forkMode>
        <workingDirectory>lib</workingDirectory>
      </configuration>
    </plugin>
    ...

実はここまでたどりつくのに結構時間がかかった。dependencyに書くとか、systemPropertiesを使ってjava.liblary.pathを指定してみるとか、testResourcesにdllを含めてみるとか、いろいろやってみてこれにたどり着いた。
maven2ってまだまだ情報(特に日本語の)が少ないなぁ。

swtのdllが見つからない場合にNoClassDefFoundError

上記エントリのちょっと前の話。dllが見つからない場合に発生したのがNoClassDefFoundErrorで、しかもクラス名が出てこなかった。NoClassDefFoundErrorを見てから、dllがないという原因を特定するまでそれなりに時間がかかったよ。javaの例外は親切なメッセージで原因が特定しやすいものが多いんだけれど、これはダメだなぁ。ネイティブリソースを触る部分だから仕方ないのだろうか。
NoClassDefFoundErrorで例外メッセージがない場合、dllなどのネイティブライブラリが存在するかどうかを確認せよってことになるのかな。swt固有の現象かもしれんけど…