Cómo empaquetar opencv + java en un tarro
He estado usando Opencv 2.4.5 con Java durante un tiempo creando una aplicación y ahora me gustaría distribuirla. La biblioteca se carga utilizando lo siguiente:
static{
System.loadLibrary("opencv_java245");
}
que funciona bien. Sin embargo, al exportar, no funciona cuando se ejecuta desde el archivo jar:
java -jar build1.jar
El archivo opencv_java245.jar se incluye como una biblioteca de usuario, con un archivo nativo (libopencv_java245.dylib) conectado a él. Cuando ejecuto el jar ejecutable generado desde Eclipse, obtengo el UnsatisfiedLinkError a continuación, a pesar de que la compilación / ejecución está bien en eclipse.
Exception in thread "main" java.lang.UnsatisfiedLinkError: no opencv_java245 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 com.drawbridge.Main.<clinit>(Main.java:12)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:266)
at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:56)
¿Alguien sabe una forma sencilla de empaquetar OpenCV en el tarro?
Actualización: ahora he agotado todo. Puedo agregar la biblioteca a mi ruta de compilación (y no usar System.loadLibrary) y eso funciona en eclipse, pero no cuando está empaquetado en el contenedor. Lo he intentado todo. También he comprobado el tipo de biblioteca dinámica que estoy intentando cargar. Es
Mach-O 64-bit x86_64 dynamically linked shared library
que parece que debería funcionar bien. He usado -D64 y -D32 para probar y obtener el mismo resultado con ambos.