我根据 Stew (2) 中的想法找到了 MacOSX 的解决方案:
使用 Mac 的 JarBundler(或同名的 Ant 任务)将工作目录变量设置为 $JAVAROOT 并确保您的 dylib 位于 .app 的 Contents/Resources/Java 部分中。如果您这样做,动态链接器将找到所有依赖 dylib,因为它将是当前目录。出于同样的原因,Java 也会找到原始的 dylib(具有所有依赖项的那个)。
蚂蚁代码:
<target name="package_mac_app" depends="package_jar, compile_native" description="bundle the runnable jar into a Mac Application -- requires JarBundler ANT Task">
<taskdef name="jarbundler" classname="net.sourceforge.jarbundler.JarBundler"/>
<echo message="CREATING MAC .app EXECUTABLE"/>
<jarbundler dir="${dist}"
name="${appname}"
mainclass="myPackage.myMainClass"
icon="${icon_location}"
jvmversion="1.5+"
infostring="${appname}"
shortname="${appshortname}"
bundleid="${com.mycompany.mydepartment.myprogram}"
jar="${run_jar_location}"
workingdirectory="$JAVAROOT">
<javafilelist dir="${dylib_location}" files="my-lib.dylib"/>
<javafilelist dir="${dylib_location}" files="dependent-lib.dylib"/>
</jarbundler>
</target>