command.sh実行時にUnsatisfiedLinkError

22 views
Skip to first unread message

ishiijp

unread,
Dec 30, 2008, 4:02:47 PM12/30/08
to xbird-jp
wikiのDatabaseAdministrationを見ながら

$ ./command.sh -col test1 import document /pathto/some.xml

上記のようなコマンドを実行してみたのですが、以下のようなエラーがでました。

Exception in thread "main" java.lang.UnsatisfiedLinkError: no
xbird_util_lang_SystemUtils in java.library.path
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1753)
at java.lang.Runtime.loadLibrary0(Runtime.java:823)
at java.lang.System.loadLibrary(System.java:1030)
at xbird.util.system.SystemUtils.<clinit>(SystemUtils.java:68)
at
xbird.util.concurrent.collections.ConcurrentCollectionProvider.createConcurrentMap
(ConcurrentCollectionProvider.java:46)
at
xbird.util.concurrent.reference.FinalizableSoftValueReferenceMap.<init>
(FinalizableSoftValueReferenceMap.java:48)
at xbird.storage.DbCollection.<clinit>(DbCollection.java:83)
at xbird.client.command.CommandInvoker.run(CommandInvoker.java:99)
at xbird.client.command.CommandInvoker.main(CommandInvoker.java:91)


$XBIRD_HOME/library/native に検索しているライブラリがあるようでしたので、
VMOPTS="-Djava.library.path=/usr/local/xbird/current/lib/native"
などとしたり、JDKを1.6に変えたりしながら試しましたが、
エラーはなくなりませんでした。

OS は Mac OS Xで、javaのバージョンを以下のようにしました。
java version "1.6.0_07"
Java(TM) SE Runtime Environment (build 1.6.0_07-b06-153)
Java HotSpot(TM) 64-Bit Server VM (build 1.6.0_07-b06-57, mixed mode)


またこれは別件なのですが、
java 1.5 で ant jarを実行しようとすると、
javax.annotaion.Nonnull がないといってエラーになってしまいました。
java 1.6では正常に実行できました。
1.5の場合はjsr-305のjarが必要なのでしょうか。


最後に提案なのですが、
現在 $XBIRD_HOME/bin のディレクトリに移動しないと
javaのクラスパスが正しく設定できないようになっていますが、
command.sh内を下記のようにして $XBIRD_HOME が設定されている場合は、
どのディレクトリでもコマンドが実行できるようにしていただけませんでしょうか。

if [ -z $XBIRD_HOME ]; then
XBIRD_HOME=".."
fi

libdir=$XBIRD_HOME/lib
distdir=$XBIRD_HOME/target
optlib=$libdir/optional

またcommand.sh や server.sh という名称は一般的すぎるような気がするので、
単に xbird と xbird-server のようなコマンド名にした方が良いように思うのですが、
いかがでしょうか。

忘れないように、今年度中に投稿させていただきました。
二度目ですが良いお年を。。

Makoto YUI

unread,
Dec 31, 2008, 1:42:30 AM12/31/08
to xbir...@googlegroups.com
ishiijp wrote:
> wikiのDatabaseAdministrationを見ながら
>
> $ ./command.sh -col test1 import document /pathto/some.xml
>
> 上記のようなコマンドを実行してみたのですが、以下のようなエラーがでました。
>
> Exception in thread "main" java.lang.UnsatisfiedLinkError: no
> xbird_util_lang_SystemUtils in java.library.path
>
> $XBIRD_HOME/library/native に検索しているライブラリがあるようでしたので、
> VMOPTS="-Djava.library.path=/usr/local/xbird/current/lib/native"
> などとしたり、JDKを1.6に変えたりしながら試しましたが、
> エラーはなくなりませんでした。
>
> OS は Mac OS Xで、javaのバージョンを以下のようにしました。
> java version "1.6.0_07"
> Java(TM) SE Runtime Environment (build 1.6.0_07-b06-153)
> Java HotSpot(TM) 64-Bit Server VM (build 1.6.0_07-b06-57, mixed mode)

パフォーマンス計測にJNI経由でOSの機能を必用とする部分がありまして、
SUN謹製のJVM(apple, openjdkはまだ対応していない)があるか、
X86のWindows(32bit)/linux環境がないと動かない部分があります。

取り合えずの対応ですが、パフォーマンス計測機能を利用しない場合
(デフォルトの設定)に、問題なく動作するように修正しました。

user.dirに置いた'xbird.properties'のxbird.profiling=trueを設定すると、
計測機能がオンになりますが、Macでは当分、非サポートです。

> またこれは別件なのですが、
> java 1.5 で ant jarを実行しようとすると、
> javax.annotaion.Nonnull がないといってエラーになってしまいました。
> java 1.6では正常に実行できました。
> 1.5の場合はjsr-305のjarが必要なのでしょうか。

jsr-305.jarがどちらでも必要で利用されているのですが、
このjarファイルがjava 1.6向けにコンパイルされているのが問題です。

今、SVNレポジトリのjsr-305.jarは1.5向けにコンパイルされたものに
更新しました。

> 最後に提案なのですが、
> 現在 $XBIRD_HOME/bin のディレクトリに移動しないと
> javaのクラスパスが正しく設定できないようになっていますが、
> command.sh内を下記のようにして $XBIRD_HOME が設定されている場合は、
> どのディレクトリでもコマンドが実行できるようにしていただけませんでしょうか。
>
> if [ -z $XBIRD_HOME ]; then
> XBIRD_HOME=".."
> fi
>
> libdir=$XBIRD_HOME/lib
> distdir=$XBIRD_HOME/target
> optlib=$libdir/optional

この方がよいですね。提案どおりにしました。

> またcommand.sh や server.sh という名称は一般的すぎるような気がするので、
> 単に xbird と xbird-server のようなコマンド名にした方が良いように思うのですが、
> いかがでしょうか。

.shはあまりパスにあまりないと思うので、そのままでいいかなーと思ってます。
tomcatとかの管理スクリプトも一般的な名前ですよねー。

今回の修正を反映させたソースコード一式は、1.0#r5としてリリースしました。

よいお年をー

Makoto YUI


ishiijp

unread,
Jan 4, 2009, 8:49:57 PM1/4/09
to xbird-jp
あけましておめでとうございます。

対応ありがとうございました。
また質問させていただくことがあると思いますが、
よろしくお願いします。
Reply all
Reply to author
Forward
0 new messages