1

JNI ライブラリを介して指紋スキャナに接続する Java プロジェクトがあります。Java プロジェクトのルート ディレクトリにある jni ファイルを使用して、プロジェクトを netbeans で完全に実行しています。問題は、jar としてパッケージ化しようとすると発生します。私はこのエラーを抱えています:

C:\Users\dwake\Desktop\OnceAgain\TestJob\dist>java -jar TestJob.jar
Exception in thread "AWT-EventQueue-0" java.lang.UnsatisfiedLinkError: no scannerJNI in java.library.path
    at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1860)
    at java.lang.Runtime.loadLibrary0(Runtime.java:845)
    at java.lang.System.loadLibrary(System.java:1084)
    at scanner.scannerGUI.<clinit>(Unknown Source)
    at scanner.main$1.run(Unknown Source)
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:701)
    at java.awt.EventQueue.access$000(EventQueue.java:102)
    at java.awt.EventQueue$3.run(EventQueue.java:662)
    at java.awt.EventQueue$3.run(EventQueue.java:660)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:671)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:244)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:163)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:151)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:147)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:139)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:97)

これは、ライブラリ ファイルが正しいディレクトリにないか、Java 仮想マシンによって見つからないことが原因であることがわかっています。JNI ライブラリを jar でコンパイルするにはどうすればよいですか?

PS 7zip で jar を開き、.dll ファイルを jar に配置しようとしましたが、これは役に立ちませんでした。

4

1 に答える 1