2017-03-10 11 views
0

元々C++で書かれたライブラリのjarをロードしようとしていますが、javaのネイティブバインディングもあります。私はそれをswigで行い、私のために以下のファイルを作成しました。enter image description herelibRETS jarをロード中のjava.lang.UnsatisfiedLinkError

私の興味のあるファイルは、librets.jar(libretsディレクトリの下の3番目の列にあります)です。私はJavaでテストプロジェクトでそれを輸入、およびドキュメント以下、私は次のコードを書いた:私はこれを実行すると

package test; 
import librets.*; 

public class Test { 
    public static void main(String[] args) throws RetsHttpException, RetsReplyException, RetsException { 
     System.out.println("Hello world!"); 
     RetsSession session = new RetsSession("http://demo.crt.relators.org:6103/rets/login"); 
    } 
} 

は今、私は、以下のランタイム例外を取得し、私はいずれかを持っていませんヒント:

Hello world! 
Exception in thread "main" java.lang.UnsatisfiedLinkError: librets.libretsJNI.swig_module_init()V 
    at librets.libretsJNI.swig_module_init(Native Method) 
    at librets.libretsJNI.<clinit>(libretsJNI.java:787) 
    at librets.RetsSession.<clinit>(RetsSession.java:225) 
    at test.Test.main(Test.java:7) 

何か理由がありますか?

答えて

0

https://www.chilkatsoft.com/java-loadLibrary-MacOSX.aspリンクは私に解決策を見つけるのを助けました。私がしなければならなかったのは、.jnilibからSystem.loadまでのファイルを私のコードに入れただけでした。

package test; 
import librets.*; 

public class Test { 

    static { 
     try { 
      System.load("/Users/Rai/Softwares/libRETS/build/swig/java/liblibrets.jnilib"); 
     } catch (UnsatisfiedLinkError e) { 
      System.err.println("Native code library failed to load.\n" + e); 
      System.exit(1); 
     } 
     } 

    public static void main(String[] args) throws RetsHttpException, RetsReplyException, RetsException { 
     System.out.println("Hello world!"); 
     RetsSession session = new RetsSession("http://demo.crt.relators.org:6103/rets/login"); 
    } 
} 
関連する問題