Cómo configurar java.library.path desde Eclipse

209

¿Cómo puedo configurar el java.library.pathproyecto Eclipse completo? Estoy usando una biblioteca Java que se basa en archivos específicos del sistema operativo y necesito encontrar un.dll/ .so/ .jnilib . Pero la aplicación siempre sale con un mensaje de error de que esos archivos no se encuentran en la ruta de la biblioteca.

Me gustaría configurar todo este proyecto para usar la ruta de la biblioteca. Traté de agregar la ruta como argumento de VM a algunas configuraciones de ejecución en eclipse, pero eso no funcionó.

Janusz
fuente
1
Lo hice agregándolo como argumento de VM y funcionó. ¿Cómo lo hiciste exactamente?
Michael Myers

Respuestas:

297

¡No te metas con la ruta de la biblioteca! ¡Eclipse lo construye por sí mismo!

En su lugar, vaya a la configuración de la biblioteca para sus proyectos y, para cada jar / etc que requiera una biblioteca nativa, amplíelo en la pestaña Bibliotecas . En la vista de árbol allí, cada biblioteca tiene elementos para la fuente / javadoc y ubicaciones de bibliotecas nativas.

Específicamente: seleccione Project, haga clic con el botón derecho -> Propiedades / Ruta de compilación Java / pestaña Bibliotecas , seleccione un .jar, amplíelo, seleccione la ubicación de la biblioteca nativa , haga clic en Editar , aparecerá el cuadro de diálogo del selector de carpetas)

Jugar con la ruta de la biblioteca en la línea de comando debería ser su último esfuerzo, porque podría romper algo que ya está configurado correctamente por eclipse.

Ubicación de la biblioteca nativa

John Gardner
fuente
66
Pero, ¿cómo funciona esto si tiene más de una carpeta para agregar?
Dan
2
buena pregunta. ¿Por qué tiene más de una carpeta de bibliotecas nativas para un jar? Estoy bastante seguro de que hay una forma en la que puede incrustar las bibliotecas nativas en el jar, ¿ese podría ser el camino a seguir?
John Gardner
1
Estoy trabajando en un proyecto heredado sobre el que tengo muy poco control. Ciertamente no puedo cambiar la estructura del proyecto. Mi solución por el momento es poner todo en mi RUTA, pero eso no es tan bueno.
Dan
1
dependiendo del sistema operativo, ¿podría crear un directorio que sea todos enlaces simbólicos a las otras bibliotecas? o al menos para fines de desarrollo, puede copiar todas las bibliotecas en un directorio.
John Gardner
2
No puedo hacer que esto se pegue. Puedo agregar la ruta de la biblioteca nativa, pero cuando hago clic en Aceptar para salir y volver a las propiedades del proyecto, dice "Ninguno". Estoy usando eclipse Indigo SR2
bacar
37

Si lo agrega como argumento de VM, asegúrese de prefijarlo con -D:

-Djava.library.path=blahblahblah...
mate b
fuente
3
Ver esta publicación: stackoverflow.com/a/2309723/510583 . -Djava.library.path = "$ {workspace_loc: project} \ lib; $ {env_var: PATH}"
leo
23

Excepto la forma descrita en la respuesta aprobada, hay otra forma si tiene libs nativas individuales en su proyecto.

  • en Propiedades del proyecto-> Ruta de compilación de Java-> Pestaña "Fuente" hay una lista de sus carpetas de origen
  • Para cada entrada, hay "ubicaciones de bibliotecas nativas", que también admiten rutas dentro del espacio de trabajo.
  • Esto hará que Eclipse lo agregue a su java.library.path.
Schieferstapel
fuente
2
¡¡¡¡increíble!!!! ¡¡¡muchas gracias!!! Eso resolvió mi problema. necesitaba agregar dylib a mi proyecto y un tarro. establecer la ubicación de la biblioteca nativa lo arregló!
ufk
11

Para el lanzamiento de una aplicación determinada, puede hacerlo como dice jim.

Si desea configurarlo para todo el espacio de trabajo, también puede configurarlo en

Window->
  Preferences->
    Java->
      Installed JREs

Cada JRE tiene un "argumento de VM predeterminado" (que creo que se ignora por completo si hay argumentos de VM configurados para una configuración de ejecución).

Incluso podría configurar diferentes JRE / JDK con diferentes parámetros y hacer que algunos proyectos usen uno, otros proyectos usen otro.

Scott Stanchfield
fuente
8

Simplemente puede agregar -Djava.library.path=yourPatha la eclipse.ini.

sonaht
fuente
6

Simplemente agregue los *.dllarchivos a suc:/windows

Puede obtener el java.library.path de los siguientes códigos: y luego agregar sus archivos dll en cualquier ruta que obtenga

import java.util.logging.Logger;

public class Test {


    static Logger logger = Logger.getLogger(Test.class.getName());
    public static void main(String[] args) {
    logger.info(System.getProperty("java.library.path"));
    }
}
Señor lou
fuente
Esto significaría que todos los que usen su proyecto también necesitarían ponerlos allí.
xtofl
Gracias por esto. La idea de poner los archivos DLL c:/windowsme demostró que era solo un problema de ruta y no un problema con los archivos DLL.
vegemite4me
5

Ninguna de las soluciones anteriores funcionó para mí (Eclipse Juno con JDK 1.7_015). Java solo pudo encontrar las bibliotecas cuando las moví de project_folder / lib a project_folder.

Günter
fuente
¿Qué? ¿Por qué debería ser eso importante? O_o
Campa
5

Creo que hay otra razón para querer establecer java.library.path. Subversion viene con muchas bibliotecas y Eclipse no las verá a menos que java.library.pathse puedan agregar. Por ejemplo, estoy en OS-X, por lo que las bibliotecas están bajo\opt\subversion\lib . Hay muchos y me gustaría mantenerlos donde están (no copiarlos en un directorio lib estándar).

La configuración del proyecto no solucionará esto.

usuario825628
fuente
entonces, ¿dónde necesito agregar los parámetros java.library.path?
eLRuLL
4

Haga clic en Ejecutar
Haga clic en Depurar ...
Nueva aplicación Java
Haga clic
en la pestaña Argumentos en el segundo cuadro (Argumentos VM) agregue la entrada -D

-Xdebug -verbose:gc -Xbootclasspath/p:jar/vbjorb.jar;jar/oracle9.jar;classes;jar/mq.jar;jar/xml4j.jar -classpath -DORBInitRef=NameService=iioploc://10.101.2.94:8092/NameService  

etc ...

jim
fuente
1
Además, en la configuración de ejecución, vaya a la pestaña "Común" y elija un lugar en su proyecto para guardar la configuración de ejecución. Esto le permite verificar esa configuración de ejecución (archivo xxxx.launch) para que otros miembros de su equipo puedan reutilizarla.
Scott Stanchfield
3

Otra solución sería abrir la 'configuración de ejecución' y luego, en la pestaña 'Entorno', establecer la pareja {Ruta, Valor}.

Por ejemplo, para agregar un directorio 'lib' ubicado en la raíz del proyecto,

    Path  <-  ${workspace_loc:name_of_the_project}\lib
Aurelien
fuente
¿Pero tal vez directamente el argumento VM -Djava.library.pathen la pestaña Argumentos ?
Campa
1

Recuerde incluir la carpeta de la biblioteca nativa en PATH.

JuanFran Adame
fuente
1

Estoy usando Mac OS X Yosemite y Netbeans 8.02, obtuve el mismo error y la solución simple que he encontrado es la anterior, esto es útil cuando necesita incluir una biblioteca nativa en el proyecto. Entonces haga lo siguiente para Netbeans:

1.- Right click on the Project
2.- Properties
3.- Click on RUN
4.- VM Options: java -Djava.library.path="your_path"
5.- for example in my case: java -Djava.library.path=</Users/Lexynux/NetBeansProjects/NAO/libs>
6.- Ok

Espero que pueda ser útil para alguien. El enlace donde encontré la solución está aquí: java.library.path: qué es y cómo usar

alexventuraio
fuente
0

En algún momento no obtenemos Java Build Path haciendo clic derecho directamente en el proyecto. luego ve a propiedades ....Haga clic derecho y vaya a propiedades

Luego haga clic en la ruta de compilación de JavaPropiedades Scrren

Haga clic en agregar jar externo

Haga clic en la pestaña agregar frascos externos y proporcione la ruta del archivo de su computadora donde ha almacenado frascos.

vardhaman
fuente
0

Aquí hay otra solución:

Mi sistema de compilación (Gradle) agregó una biblioteca nativa requerida (dll) a la ruta de compilación de Eclipse (haga clic con el botón derecho en Proyecto -> Propiedades -> Ruta de compilación de Java -> Bibliotecas). Decirle al sistema de compilación que no agregue la biblioteca dll nativa al classpath de Eclipse resolvió el problema.

bagazo
fuente
0

Puede agregar el argumento vm en su Eclipse.

Ejemplo:

-Djava.ext.dirs=cots_lib

¿Dónde cots_libestá su biblioteca de carpetas externas?

della pramukti raharjo
fuente
-1

la forma más fácil sería usar el eclipse IDE en sí. Vaya al menú y configure la ruta de compilación. Haga que apunte a la ruta del archivo JAVA JDK y JRE en su directorio. luego puede verificar la ruta de compilación donde se configurarán los archivos compilados. en la carpeta bin por defecto sin embargo. Lo mejor sería permitir que eclipse maneje la ruta de compilación y solo editarlo de manera similar a la solución que se proporciona arriba

khangulmalik
fuente