Cómo agregar biblioteca nativa a " java.biblioteca.path " con Eclipse launch (en lugar de sobrescribirlo)


Tengo una biblioteca nativa que necesita ser agregada a java.biblioteca.path . Con el argumento JVM - Djava.biblioteca.path = path... Puedo establecer la ruta como quiera.

Mi problema es que mi otra biblioteca (pentaho reporting) busca fuentes basadas en el java predeterminado.biblioteca.ruta (incluyendo directorios del sistema, etc.) y la configuración manual anula la ruta predeterminada..

Entonces: ¿cómo puedo agregar una entrada de ruta al java predeterminado.biblioteca.ruta en lugar de sobrescribirla (que parece haber terminado con-Djava.biblioteca.camino)? (No me gustaría agregar la ruta predeterminada a mano, lo que no sería bueno por el bien de la implementación)

EDITAR: Lo siento por los detalles que faltan; estoy trabajando con Eclipse. (El despliegue se realiza con JNLP y allí puedo usar nativelib bajo resources )

Author: Touko, 2009-03-19

13 answers

Había olvidado este tema... En realidad estaba preguntando con Eclipse, lo siento por no decir que originalmente. Y la respuesta parece ser demasiado simple (al menos con 3.5; probablemente también con versiones anteriores):

Java run configuration's Arguments: VM arguments:

-Djava.library.path="${workspace_loc:project}\lib;${env_var:PATH}"

No debe olvidar las comillas, de lo contrario hay problemas con los espacios en la RUTA.

 43
Author: Touko,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-02-22 08:44:35

Si desea agregar una biblioteca nativa sin interferir con java.library.path en tiempo de desarrollo en Eclipse (para evitar incluir rutas absolutas y tener que agregar parámetros a su configuración de lanzamiento), puede proporcionar la ruta a la ubicación de las bibliotecas nativas para cada Jar en el diálogo Java Build Path bajo Native library location. Tenga en cuenta que el nombre del archivo de la biblioteca nativa debe corresponder al nombre del archivo Jar. Véase también esta descripción detallada.

 14
Author: Fabian Steeg,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-01-24 23:46:30

SWT pone las DLL nativas necesarias en un FRASCO. Buscar " org.eclipsar.swt.win32.win32.x86_3.4.1.v3449c.jar " por ejemplo.

Las DLL deben estar en la raíz del JAR, el JAR debe estar firmado y el DLL debe aparecer con suma de comprobación en el META-INF/MANIFEST.MF para que la máquina virtual los recoja.

 9
Author: Aaron Digulla,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-12-04 08:19:23

En Windows, así:

-Djava.biblioteca.ruta="C:/MyLibPath;% PATH %"

%PATH% es tu antiguo-Djava.biblioteca.ruta

 3
Author: andy boot,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-06-10 21:20:28

Https://bugs.eclipse.org/bugs/show_bug.cgi?id=102239 afirma que no hay ninguna mecánica de sustitución implementada en el lanzador de Eclipse, al menos no hay hasta el lanzamiento de Juno.

Por lo tanto, es (casi) imposible anexar o anteponer otra carpeta de biblioteca a java.biblioteca.ruta al iniciar Eclipse sin conocimiento previo de la configuración predeterminada.

Escribí casi, causa que debería ser posible dejar Eclipse de inicio, volcar el contenido de java.biblioteca.eclipse de ruta y parada en una orden. El volcado se analizaría y luego se tomaría como la entrada para lanzar Eclipse, es decir,

#!/bin/bash
# get default value of java.library.path (somehow)
default_lib_path=$( start_dump_stop_eclipse_somehow )  

# now launch Eclipse
eclipse --launcher.appendVmargs \
         -vmargs \
         -Djava.library.path="/my/native/lib/folder:${default_lib_path}"
 2
Author: whaefelinger,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-02-21 14:17:22

Puedes evitar esto llamando a System.load () programáticamente para cargar su biblioteca nativa? Este método (a diferencia del sistema .LoadLibrary () ) permite especificar una ruta de acceso absoluta.

 1
Author: Simon Nickerson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-03-19 08:36:20

Ventana- > Preferencias - > Java- > JREs instalados. A continuación, elija su JRE actual (JDK) y haga clic en Editar. Rellene los Argumentos de VM Predeterminados: - Djava.biblioteca.path= / usr / local/xuggler / lib. Hecho!

 1
Author: Vadym,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-11-26 08:20:10

La solución ofrecida por Rob Elsner en uno de los comentarios anteriores funciona perfectamente (OSX 10.9, Eclipse Kepler). Uno tiene que añadir sus caminos adicionales a los separados por":".

También podría usar system{system_property:java.biblioteca.path} - Rob Elsner Nov 22 ' 10 at 23: 01

 1
Author: Johan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-08-16 19:29:34

En sistemas UNIX, puede agregar a la variable de entorno LD_LIBRARY_PATH. En Windows, la JVM establece automáticamente la propiedad del sistema, java.biblioteca.path, to PATH; así que si la dll está en tu PATH, entonces estás listo.

 0
Author: geowa4,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-09-09 01:01:48

El nombre del archivo de la biblioteca nativa debe corresponder al nombre del archivo Jar. Esto es muy importante. Por favor, asegúrese de que el nombre jar y el nombre dll sean los mismos. También, por favor vea el post de Fabian Steeg Mi descarga para jawin contenía diferentes nombres para dll y jar. Era Jawin.jar y jawin d .dll, nota ' d ' extra en el nombre del archivo dll. Simplemente lo renombré a Jawin.dll y configurarlo como una biblioteca nativa en eclipse como se menciona en post " http://www.eclipsezone.com/eclipse/forums/t49342.html "

 0
Author: Dhana,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-07-09 07:25:24

Por alguna razón no pude hacer que funcionaran varias carpetas (bueno, lo hizo por un tiempo, pero tan pronto como necesité más archivos DLL y agregué más carpetas, ninguna con espacios en blanco en la ruta). Luego copié todas las DLL necesarias en una carpeta y las tenía como mi java.biblioteca.path y funcionó. No tengo una explicación - si alguien lo hace, sería genial.

 0
Author: Ustaman Sangat,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-12-09 16:06:28

Muchas de las respuestas existentes asumen que desea establecer esto para un proyecto en particular, pero necesitaba establecerlo para Eclipse para admitir la autenticación integrada para el controlador JDBC de SQL Server.

Para hacer esto, seguí estas instrucciones para lanzar Eclipse desde la línea de comandos de Java en lugar de su lanzador normal. Entonces solo modifiqué ese script para agregar my-Djava.biblioteca.argumento path a la línea de comandos de Java.

 0
Author: CrazyPyro,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-03-26 22:28:06

En Windows, he encontrado que lo importante es iniciar Eclipse desde la línea de comandos en lugar de desde el Menú Inicio o un acceso directo, siempre que el DLL nativo esté en un directorio en su RUTA. Al parecer, esto asegura que el directorio adecuado está en la ruta.

 -2
Author: Alan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-08-08 19:46:26