【问题标题】:Java app loads JNI differently when started via AntJava 应用在通过 Ant 启动时加载 JNI 的方式不同
【发布时间】:2010-10-05 19:39:15
【问题描述】:

我在包含 JNI 库的 Java 应用程序中使用 RXTX。我将.jni 文件放在/Libray/Java/Extensions 中。当我通过通常的java -jar /path/to/app.jar 手动启动我的应用程序时,一切正常。但是,当我尝试通过 Netbeans 或 Ant 启动它时,它失败了

 [java] java.lang.UnsatisfiedLinkError: /Library/Java/Extensions/librxtxSerial.jnilib:  no suitable image found.  Did find:  /Library/Java/Extensions/librxtxSerial.jnilib: no matching architecture in universal wrapper thrown while loading gnu.io.RXTXCommDriver
 [java] Exception in thread "main" java.lang.UnsatisfiedLinkError: /Library/Java/Extensions/librxtxSerial.jnilib:  no suitable image found.  Did find:  /Library/Java/Extensions/librxtxSerial.jnilib: no matching architecture in universal wrapper
 [java]     at java.lang.ClassLoader$NativeLibrary.load(Native Method)
 [java]     at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1823)
 [java]     at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1738)
 [java]     at java.lang.Runtime.loadLibrary0(Runtime.java:823)
 [java]     at java.lang.System.loadLibrary(System.java:1045)
 [java]     at gnu.io.CommPortIdentifier.<clinit>(CommPortIdentifier.java:83)

当我将 .jni 移动到其他地方并使用 -Djava.library.path 将 JVM 指向它时的模拟行为。它手动工作,但在 Ant 中失败。

我正在使用运行 Mac OS X 10.6.4 的 Java 1.6 64Bit、Ant 1.7.1、RXTX 2.1-7r2(稳定版)

【问题讨论】:

    标签: java macos ant java-native-interface rxtx


    【解决方案1】:

    您的 ant java 任务是否设置了&lt;jvmarg value="-Djava.library.path=location-of-your-native-library"/&gt;

    【讨论】:

    • 感谢您的回答。是的,我在 build.xml 中尝试了该行。这就是我要描述的类比行为。它失败并出现我发布的相同错误。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-29
    • 2020-09-12
    • 2012-04-19
    • 1970-01-01
    相关资源
    最近更新 更多