在 JOGL 中,有很多用于不同 OS x 架构组合的原生 jar。如果您不使用 java.library.path,JOGL 有几种自己的机制来加载正确的机制,并且支持一种“fat jar”布局。
在胖 jar 布局中,任何原生库都需要位于子目录 ./natives/os.and.arch/ 中。但是,由于本机 jar 本身没有任何内部布局,因此类似命名的 so/dylib/dll 文件会与最终 jar 中的平面层次结构发生冲突。
据我所知,我不认为我想对任何给定的 MergeStrategy 进行重复数据删除,因为只有在发生冲突时才会调用它。对于 JOGL 的本地库加载器,布局是强制性的——我想每次都调用它。是否有一种机制可以让我在 sbt-assembly 中映射某些 jar -> prefix/with/path?
例子
jogl-all-2.1.3-natives-android-armv6.jar 通过依赖项引入。
$ jar -tf jogl-all-2.1.3-natives-linux-amd64.jar
META-INF/MANIFEST.MF
libjogl_mobile.so
libnewt.so
我希望这个放在最后的罐子里:
./natives/
./natives/linux.and.amd64/
./natives/linux.and.amd64/libnewt.so
./natives/linux.and.amd64/libjogl_mobile.so