2012-01-11 16 views
8

Tengo problemas para exportar mi proyecto java de eclipse como un archivo ejecutable jar. Mi proyecto Java usa una biblioteca externa (se llama jri). He exportado el archivo jri.jar y configurado la ruta de la biblioteca para su biblioteca nativa en eclipse, y funciona muy bien en desarrollo en eclipse. Sin embargo, cuando la exportación como un archivo jar ejecutable me sale el siguiente error:Exportación a jar ejecutable con bibliotecas de códigos nativos adicionales en eclipse

Cannot find JRI native library! 
Please make sure that the JRI native library is in a directory listed in java.library.path. 

He colocado una carpeta llamada lib en el mismo directorio que el tarro de mi proyecto; esta carpeta lib contiene la biblioteca nativa de jri. La biblioteca nativa de jri no está en un archivo sino en una carpeta. Esta es la misma configuración que tengo en eclipse.

La forma en que estoy exportando mi proyecto en Eclipse es

Export... 
Java > Runnable JAR file 
Copy required libraries into a sub folder next to the generated Jar 
Finish 

Y mi carpeta está organizado como esto

folder project 
    project.jar 
    project_lib 
    jri.jar 
    jri native library folder 

El MANIFIEST.MF de mi project.jar es:

Manifest-Version: 1.0 
Class-Path: . project_lib/jri.jar 
Main-Class: index 

Lo que quiero lograr es darle a otra persona una carpeta que incluya project.jar y todo lo demás necesario para que él/ella puede ejecutarlo sin necesidad de instalar nada más. Gracias tanto

+0

Si odias no lo uses, no culpes por ello. Si algo sale mal con el eclipse, es posible que no sea tu culpa el que se eclipse. – ozhan

+1

Marque esta respuesta similar, ayuda migth. http://stackoverflow.com/questions/2702132/how-can-i-include-platform-specific-native-libraries-in-the-jar-file-using-ecli – ozhan

+2

¿Intentó agregar project_lib/jri_native_library_folder al manifiesto .mf classpath? – KJP

Respuesta

8

Agregar un script que contiene algo así:

#!/bin/bash 
java -Djava.library.path=project_lib/native/ -jar project_lib/jri.jar 

puedo exportar algunos proyectos Java que manera.

1

Usted puede poner las bibliotecas dentro su frasco:

Export...

Java > Runnable JAR file

Package required libraries into generated Jar

Finish

siempre que la exportación de esta manera. No sé si funcionará en su caso, pero vale la pena intentarlo.


Editar:

ver a estos enlaces:

Mi conjetura es que esto tiene algo que ver con LD_LIBRARY_PATH no correc tly sido establecido. O el archivo que está buscando no se encuentra en la ruta de la lista.

+0

Lo he intentado pero no funciona, recuerde que las bibliotecas nativas para el paquete externo están en una carpeta y el archivo java.library.path necesita tener acceso a él. –

+1

@JulioDiaz: vea la edición, espero que pueda ayudarlo. – falsarella

+1

trabajado para mi caso. –

3

Esto es relativamente difícil de implementar. Las soluciones que he visto implican extraer las bibliotecas nativas en el JAR a un directorio temporal del sistema operativo y luego cargarlo. Yo buscaría una solución integrada para eso. One Jar y Java Class Loader lo admiten, y en la segunda página encontrará enlaces a herramientas similares.

+0

Tiene razón, por lo que yo sé, Java no puede cargar bibliotecas JNI (.dll, .so, etc.) desde un archivo JAR. Las soluciones que menciona extraen los archivos relevantes en tiempo de ejecución, de modo que Java pueda cargarlos. – ChrisJ

0

Usted sabía que tenía los mismos problemas

Could not extract native JNI library. 

todos por encima propone no me puede ayudar.No podía detener e iniciar demonio Gradle utilizando el comando siguiente:

gradle --stop 

he visto que la demonio Gradle todavía no se detiene en mis procesos. Es por eso que lo mato en mi proceso y todo estará bien :)

Cuestiones relacionadas