1

我有以下ant目标来使用JNI call运行我的 Java 应用程序。我能够通过我的run.sh文件(在 Linux 中)运行该应用程序。我总是在ant上得到java.lang.UnsatisfiedLinkError

我的库是一个包装器,它与另一个库libB 链接。似乎找不到./JNI/mtflib/lib目录下的libB。它在我提供的路径上。

我尝试了路径的“ : ”、“ ; ”和“ , ”分隔符。我尝试了jvmarg value="-Djava.library.path=和" sysproperty key="java.library.path" path= " 选项。fork设置为 true。

<target name="run" depends="echo, copyLogViewer" 
        description="Run application from development environment">
        <java classname="${program.main}"
              classpathref="compile.classpath"
              fork="true">
            <jvmarg value="-Xmx${MAX_MEMORY}m"/>
            <jvmarg value="-Xms${MIN_MEMORY}m"/>
            <jvmarg value="-XX:NewSize=${YOUNG_MEMORY}m"/>
            <arg value="-v"/>
            <jvmarg value="-splash:resources/images/splash/splash.gif"/>
            <!--jvmarg value="-Djava.library.path=.:./JNI:./JNI/mtflib:./JNI/mtflib/lib:./JNI/mtflib/parse:${java.library.path}"/-->
            <sysproperty key="java.library.path" path=".:./JNI:./JNI/mtflib:./JNI/mtflib/lib:./JNI/mtflib/parse:${java.library.path}"/>
        </java>
    </target>
4

1 回答 1

1

请使用这个:

<env key="LD_LIBRARY_PATH" path="..."/>

而不是上面的java.library.path ...

至少在 Linux 系统中

于 2013-05-03T17:03:48.837 回答