2012-02-17 13 views
0

でlibrxtxSerialをロードするためにどのように私は、Javaでそれをインタフェースする、それはかなり簡単だったアルドゥイーノと遊ぶことを始めたが、今私は、プログラムlibrxtxSerialネイティブのlibをロードしたい、と私は理解することはできません。ここで推奨されているようhttp://blog.iharder.net/2009/08/18/rxtx-java-6-and-librxtxserial-jnilib-on-intel-mac-os-x/:その後http://arduino.cc/playground/Interfacing/Javaは、プログラムのJava

を私はこのようなプログラムでそれをロードしようとした:私はMacOSの64ビット上だとJava6のを使用しているので は、私は次のjnilibを使用した作品には思わ

/** 
 * Loads the jnilib 
 */ 
public static void loadJniLib() { 
    // loads the jnilib from the source folder "src/main/resources" 
    URL url = Demo.class.getResource("/librxtxSerial.jnilib"); 
    try { 
     System.load(url.getPath()); 
    } 
    catch (UnsatisfiedLinkError unsatisfiedLinkError) { 
     // native code library failed to load. 
     unsatisfiedLinkError.printStackTrace(); 
    } 
} 

(少なくとも例外をスローしません)。

しかし、私はCommPortIdentifier.getPortIdentifier(PORT_NAME);を呼び出すときには、次の例外がスローされます。

java.lang.UnsatisfiedLinkError: no rxtxSerial in java.library.path thrown while loading gnu.io.RXTXCommDriver 
Exception in thread "main" java.lang.UnsatisfiedLinkError: no rxtxSerial in java.library.path 
    at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1758) 
    at java.lang.Runtime.loadLibrary0(Runtime.java:823) 
    at java.lang.System.loadLibrary(System.java:1045) 
    at gnu.io.CommPortIdentifier.<clinit>(CommPortIdentifier.java:83) 
    at fr.free.mdwhatever.arduino.maven.Demo.initialize(Demo.java:57) 
    at fr.free.mdwhatever.arduino.maven.Demo.main(Demo.java:102) 

によると、それをロードするための正しい方法であると思われるので、だから私は、間違っているものを理解していない:http://docs.oracle.com/javase/6/docs/api/java/lang/System.html#load(java.lang.String)

何か案が?

PS:https://gist.github.com/1853637 RXTXジャーがクラスパスにあり、ネイティブライブラリの場所が定義されて動作します:あなたは、ここで全体のコードを見つけることができます(Eclipseで、このように:http://www.eclipsezone.com/eclipse/forums/t49342.html

答えて

0

で動作する最も簡単な方法これは-Djava.library.path=/usr/lib/jniを使用してコマンドライン上で、例えば、java.library.pathシステムプロパティを設定することです。今思い出すと

、ライブラリのロードは、ライブラリを明示的にホワイトリストに登録されていない場合に失敗するように設計されています。これは、図書館がjava.library.pathにある必要があることを意味します。

+0

あなたのコメントをありがとう、私はまた、プログラム的に私jnilibを含むフォルダを追加し、 'System.loadLibraryを(「librxtxSerial」)を呼び出すことで' java.library.path'を修正しようとしました; '運のいずれか。 まだ、私は他の可能性を知っていますが、プログラムでそれをやりたいと思います。 –

関連する問題