2016-04-25 29 views
0

javacppを使用してJavaからcppにアクセスしています。javacpp実行時のjava.lang.UnsatisfiedLinkError

私はドキュメント

cppのコードで提供されている例試みている:私はNativeLibrary.javaファイルを実行する場合、私は次のエラーを取得しています

import org.bytedeco.javacpp.*; 
import org.bytedeco.javacpp.annotation.*; 

@Platform(include="LegacyLibrary.h") 
@Namespace("LegacyLibrary") 
public class LegacyLibrary { 
    public static class LegacyClass extends Pointer { 
     static { Loader.load(); } 
     public LegacyClass() { allocate(); } 
     private native void allocate(); 

     // to call the getter and setter functions 
     public native @StdString String get_property(); public native void set_property(String property); 

     // to access the member variable directly 
     public native @StdString String property();  public native void property(String property); 
    } 

    public static void main(String[] args) { 
     // Pointer objects allocated in Java get deallocated once they become unreachable, 
     // but C++ destructors can still be called in a timely fashion with Pointer.deallocate() 
     LegacyClass l = new LegacyClass(); 
     l.set_property("Hello World!"); 
     System.out.println(l.property()); 
    } 
} 

CompletableFuture<Integer> futureInC(){ 
    @StdFuture f = @cppDemo.futureInC(); 
    CompletableFuture<Integer> future = new CompletableFuture<>(); 
    f.then(int value -> future.complete(value)); 
    return future; 
} 

Javaコードをインテリジェントアイデア:

Exception in thread "main" java.lang.UnsatisfiedLinkError: no jniNativeLibrary in java.library.path 
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1867) 
at java.lang.Runtime.loadLibrary0(Runtime.java:870) 
at java.lang.System.loadLibrary(System.java:1122) 
at org.bytedeco.javacpp.Loader.loadLibrary(Loader.java:597) 
at org.bytedeco.javacpp.Loader.load(Loader.java:438) 
at org.bytedeco.javacpp.Loader.load(Loader.java:381) 
at com.viettel.demo.NativeLibrary$NativeClass.<clinit>(NativeLibrary.java:13) 
at com.viettel.demo.NativeLibrary.main(NativeLibrary.java:27) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
at java.lang.reflect.Method.invoke(Method.java:498) 
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:144) 

Intellij Ideaでjavacppのサンプルを実行するにはどうすればいいですか?問題なくReadme.mdのguildeに続いてコマンドラインを試しました。 ご協力いただきありがとうございます。

+0

あなたはどのドキュメントについて話していますか?リンク –

+0

https://github.com/bytedeco/javacpp 私はJNI C++ Javaのためにjavacppを使用しています –

答えて

1

例外のこのセットは、アプリケーションがこの例外を修正property.To変数とjava.library.pathにシステムJVMがPATH環境の両方で募集しています。この場合.IN ネイティブライブラリをロードしようとしたときにトリガーされますロードしようとしているライブラリのパスを設定する必要があります。ちょうどあなたがjavaのためのパスを設定するように。

+0

私は** **私たちは**あなたの答えをより多くの**読解を見つけるだろうと思う**あなたがしなかった**マークアップ**をあまり使わないでください。適切な文、大文字、句読点などが役立ちます。 –

+0

私の答えは混乱のためにsryを編集しました。 – Priyamal