2012-10-11 29 views
6

Quiero instalar diferentes archivos JAR, como unidades JDBC de base de datos en OS X, para que otras aplicaciones Java los encuentren.¿Dónde instalar archivos JAR en OS X para que otras aplicaciones Java los encuentren?

¿Dónde se supone que debo ponerlos? Intenté ~/Library/Java/Extensions pero no funciona.

Detalles:

OS X 10.8.2 

java version "1.6.0_35" 
Java(TM) SE Runtime Environment (build 1.6.0_35-b10-428-11M3811) 
Java HotSpot(TM) 64-Bit Server VM (build 20.10-b01-428, mixed mode) 

Nota: no tengo control sobre cómo se inicia la aplicación, pero yo supongo que la aplicación no incude su propia distribución de Java y que comenzará a las versiones instalado OS (el que está disponible desde la línea de comando).

Además, no tengo ningún tipo de configuración CLASSPATH, y por favor recuerde que las variables de entorno que están disponibles para los programas de línea de comandos no son los mismos que los que están disponibles para aplicaciones de interfaz gráfica de usuario en OS X.

necesito especificar que estoy intentando esto para mi máquina de desarrollo y que este enfoque no es una forma de implementar aplicaciones Java.

+0

¿No está utilizando ninguna herramienta de gestión de la dependencia? ¿Como gradle, maven o hormiga/ivy? Eso te haría la vida más fácil. – maba

Respuesta

1

Deben incluirse en el classpath de la aplicación. Si lo ejecuta desde la línea de comando, entonces use, p. "java -cp ~/Library/Java/Extensions/foo.jar Barra"

Por otro lado, si utiliza un servidor de aplicaciones como tomcat, puede empaquetar el contenedor dentro de la guerra de su aplicación de colocarlo en una carpeta de biblioteca compartida del servidor.

10

Por favor, NO hagas esto. Este es el motivo: otras aplicaciones se romperán, porque esos archivos JAR se cargarán para cada aplicación Java.

En detalle: Vendo una aplicación Java para Mac. Se basa en tener una versión reciente específica de un archivo JAR (para JFreeChart). A veces hay una versión anterior del mismo archivo JAR en la carpeta de extensiones apropiada. Esto rompe mi aplicación.

Pero si realmente quiere hacer esto: De acuerdo con Apple's docs:

Bibliotecas de extensión

software de Java en otras plataformas a menudo hace uso del directorio $ JAVA_HOME/lib/ext dentro una instalación JDK para almacenar clase de soporte o archivos jar. Si bien Java para Mac OS X también contiene un directorio lib/ext , los desarrolladores no deberían modificarlo directamente para las mismas razones mencionadas anteriormente. El directorio/Library/Java/Extensions se puede utilizar para archivos jar adicionales o bibliotecas JNI que deben ser ubicadas en el classpath del sistema. Para obtener un acceso más controlado, el directorio ~/Library/Java/Extensions se puede utilizar para la instalación de bibliotecas de soporte en el nivel de usuario . Los elementos colocados en cualquiera de estos directorios no necesitan ser nombrados en el classpath de una aplicación y estarán disponibles para todas las aplicaciones que se ejecutan bajo el alcance respectivo (nivel del sistema o nivel de usuario, dependiendo de qué directorio se use).

0

Sugeriré segunda comentarios de Steve y, además, que utiliza Maven o Ivy para su gestión de la dependencia.

La gestión de la biblioteca es por proyecto. Es mucho más fácil administrar actualizaciones e interdependencias. Maven (no sé sobre Ivy) puede decirle qué librerías están desactualizadas, cuáles entran en conflicto entre sí, etc. Para cada proyecto puede especificar con precisión las versiones que necesita sin preocuparse de si los cambios romperán otros proyectos.

-3

Ok solo mi contribución ... pero quería ejecutar mi pequeño programa de base de datos en la línea de comandos, pero necesitaba mysql-connector-java-5.1.29-bin.jar en la ruta de clases para hacerlo. Pasé algún tiempo tratando de descubrirlo y encontré la solución. Solté el archivo jar en la carpeta Library/Java/Extensions y reinicié mi máquina. Ahora lo anterior dice que debe incluir el classpath cuando está "ejecutando" el programa (java -cp ~/Library/Java/Extensions/foo.jar Bar), pero no funcionó para mí. En su lugar he emitido el comando durante el tiempo de compilación y luego ejecuté mi programa:

$ javac -cp /Library/Java/Extensions/mysql-connector-java-5.1.29-bin.jar FirstExample.java 
$ java FirstExample 

Y esto es lo que tengo ... datos de la consulta de mi base de datos:

Conexión a la base de datos ...
Creación comunicado ...
ID: 1, Título: Representante de Ventas, primero: Nancy, Última: Davolio
ID: 2, Título: Vicepresidente de Ventas, primero: Andrew, Última: Fuller ID: 3, Título : Representante de ventas, primero: Janet, apellido: Leverling
ID: 4, Título: Representante de Ventas, Primero: Margaret, Última: pavo real
Identificación: 5, Título: Gerente de Ventas, Primero: Steven, Última: Buchanan
ID: 6, Título: Representante de Ventas, Primero: Michael , Último: Suyama
ID: 7, Título: Representante de Ventas, primero: Robert, Última: rey
Identificación: 8, Título: Inside Sales Coordinator, primero: Laura, Última: Callahan
ID: 9, Título: Ventas Representante, Primero: Anne, Último: Dodsworth

¡Adiós!

Espero que esto ayude

+0

Eso no explica dónde _instalar_ un jar y el ejemplo con la base de datos es confuso. –

Cuestiones relacionadas