2010-04-25 13 views
6

Normalmente guardo las aplicaciones Java y los archivos JAR que descargo de la Web en la carpeta ~/Java de mi computadora (una máquina OS X). He estado haciendo esto desde los días en que era un usuario de Windows. Sin embargo, creo que en los sistemas basados ​​en UNIX, las aplicaciones locales de los usuarios se almacenan convencionalmente en otro directorio. Tengo la sensación de que este directorio debe ser /usr/local/, /usr/local/USERNAME, /opt/local o /opt/local/USERNAME, pero no estoy seguro. ¿Alguna idea de qué directorio puedo usar para este propósito?La ubicación convencional para almacenar mis bibliotecas y aplicaciones Java en sistemas basados ​​en UNIX

Tenga en cuenta que, estoy hablando de los ficheros de archivo que he descargado desde la Web, descomprimir y utilizar localmente y no los programas que tienen scripts de instalación o MacPorts, etc.

+2

Almacenarlos en /home/USERNAME/.maybeEvenAHiddenFolder. "/ usr /" btw no tiene nada que ver con "usuario", pero en realidad es corto para los recursos del sistema Unix. – Tedil

+2

1. OS X es unix 2. a menos que desee que estos estén instalados para todos los usuarios del sistema, no hay nada de malo en ponerlos en su directorio principal ... – xenoterracide

+0

@xenoterracide: ¡Lo sé! ¡Y he usado ~/Java durante años sin problemas! Mi pregunta era acerca de las convenciones sin embargo. – Behrang

Respuesta

2

No hay ninguna manera bendecida de hacerlo. Sin embargo, es posible que tenga varias versiones de un contenedor y, a partir de ahí, se irá cuesta abajo.

Normalmente descargo las jarras que necesito como distribución, y las descomprimo en su propia carpeta, y luego agrego las jarras a los proyectos que las necesito en mi IDE. Para las bibliotecas, un enfoque común es usar Maven y su manejo de dependencia.

Por lo tanto, mi sugerencia es mantener su actual forma de hacer que, si te gusta eso, pero tienen cada proyecto en su propia carpeta, como

~/Java/jakarta-commons-net-1.1.8/commons-net.jar 
+0

@ Thorbjørn: conozco los choques de JAR, etc., y en este momento los estoy organizando exactamente como en su ejemplo. Sin embargo, solo preguntaba sobre las convenciones. Parece que no hay convenciones aquí ... :) – Behrang

+0

Todavía usamos CVS y hemos establecido un hábito de bibliotecas usadas, cada una de las cuales se encuentra en su propio proyecto Eclipse con source y javadoc definidos, y esas también se registran en CVS. Esto nos permite usar Import -> ProjectSet para obtener un espacio de trabajo completamente poblado sin maven y totalmente interno. –

2

Es posible que desee leer el Filesystem Hierarchy Standard/opt o/usr/local son probablemente apropiados, pero primero debe leer las definiciones de FHS.

+0

o consulte la versión de Apple http://developer.apple.com/mac/library/documentation/Darwin/Reference/ManPages/man7/hier.7.html#//apple_ref/doc/man/7/hier Nota/opt/local es utilizado por macports, por lo que puede estar mejor en/usr/local para el código compartido – Mark

3

de Apple tienen un dar note/Library/Java/Extensiones como directorio para jar compartidos y ~/Library/Java/Extensions para jar solo para ti. Estas rutas están en el classpath.

Las jarras pueden estar en cualquier lugar siempre que ese directorio esté en su ruta de clase. (Yo uso una versión de Thorbjørn Ravn Andersen estilo que uso ~/Library/Jar/jakarta-commons-net-1.1.8/commons-net.jar)

Vea la respuesta de Tom Anderson para una mejor manera de hacerlo usando hiedra, etc.

13

La para-respuesta es que no debe descargar tarros a mano, debe usar Gradle, Ivy, Maven, o algo similar para administrar sus tarros para usted. Estas herramientas toman una simple especificación de sus dependencias como entrada, y van a buscar, descargar, almacenar y poner a disposición todos los archivos jar necesarios. Esto lleva un poco de tiempo acostumbrarse, pero es maravilloso una vez que estás al corriente.

Una respuesta directa, sin embargo, es que en el Unix ortodoxo, estos archivos pertenecen a /usr/local/share. usr porque son datos de solo lectura que no forman parte del sistema operativo base, local porque no están siendo suministrados por el sistema operativo (que posee el resto de /usr) y share porque los archivos jar son independientes de la arquitectura.

Tenga en cuenta que en FreeBSD, el sistema de administración de paquetes 'ports' pone los archivos en /usr/local, pero creo que lo comparte con el administrador local. No hay otra ubicación donde vayan los archivos puramente locales.

Si el sistema tiene una convención para donde van los frascos administrados por el paquete, cópielo debajo de /usr/local. Por ejemplo, en Ubuntu, existe /usr/share/java, por lo que debe usar /usr/local/share/java.

Además, si el sistema tiene una convención para manejar versiones, cópielo. De nuevo, en Ubuntu, los archivos jar se almacenan en un directorio, con números de versión en el nombre, pero con un enlace simbólico sin sentido que apunta a la versión predeterminada/última. Entonces, tengo un archivo en /usr/share/java/xstream-1.3.1.jar, y un enlace simbólico en /usr/share/java/xstream.jar apuntando a él. Utilizaría el mismo enfoque en /usr/local/share/java.

Ahora, eso es para unix ortodoxo. Estás en OS X, que no es unix ortodoxo. Aún así, se aplican los principios: encuentre cómo el sistema almacena los archivos jar que proporciona y transpórtalo a un espacio de sistema de archivos administrado por el usuario.

1

En los sistemas FreeBSD la ubicación es ${LOCALBASE}/share/java - y los subdirectorios de los mismos. No es que todos los puertos de software lo respeten, pero deberían hacerlo.

LOCALBASE es generalmente /usr/local - a menos que sea sobrescrito por el administrador del sistema.

Cuestiones relacionadas