2009-01-27 9 views
20

¿Cómo configuro mi buildpath proyecto para tener un conjunto de archivos .jar ubicados en el mismo directorio incluido automáticamente en el buildpath? ¿Quiere decir que agregando un nuevo archivo .jar a este directorio (y refrescando el proyecto) actualiza el buildpath? Rem: No estoy trabajando en una aplicación web, sino en una aplicación Java independiente. Sé que es posible en un Proyecto Web Dinámico tener todos los .jar ubicados en WEB-INF/lib para ser incluidos en la ruta de compilación. ¿Es posible hacer una especie de la misma pero en una aplicación independiente?Eclipse buildpath toma automáticamente todos los JAR de un directorio interno

Estoy usando Eclipse 3.4

Respuesta

-2

¿Ha intentado utilizar un comodín en la ruta de clase? Así que usaría algo como: java

javac MyApp.java -cp /some/path/to/libraries/*.jar 

No he utilizado durante algún tiempo así que no sé si lo anterior es posible, pero es lo que yo esperaba ser la sintaxis.

11

AFAIK, no hay una forma normal de hacerlo.

Si realmente quieres, hay un pequeño truco. El archivo .classpath de Eclipse es un XML muy simple. Puede escribir una secuencia de comandos o tarea ant que va sobre un directorio, actualiza .classpath xml y actualiza el proyecto.

+4

+1. No estoy seguro de por qué has votado negativamente por esto. He hecho algo similar y funcionó perfectamente. Para ir un paso más allá, puede agregar su secuencia de comandos como generador para que se active automáticamente cada vez que se limpia el proyecto ... – gMale

1

Lo que significa que la adición de un nuevo archivo .jar a este directorio (y refrescante del proyecto ) actualiza la BuildPath

Lo sentimos, Eclipse no soporta esto.

9

El uso de un hecho en casa "ClassPath Contenedor" resuelve el problema, sino que tiene que construir un eclipse-plugin: http://www.ibm.com/developerworks/edu/os-dw-os-eclipse-classpath.html

+0

exactamente la respuesta correcta: los contenedores classpath son bastante fáciles de escribir, pero debe entregar un complemento para el el resto de su equipo usará –

2

Uso Maven2, y utilizar el plug-in de Eclipse Maven2.

+0

o Ivy con el complemento IvyDE. – gMale

0

En una máquina con Windows puede hacer lo que dijo uzhin con un trazador de líneas en la línea de comando.

Supongamos que ha configurado una variable en Eclipse llamada AXIS2_HOME que apunta a c: \ javalibs \ axis2-1.4.1, este ejemplo usa el comando "for" para iterar todos los archivos .jar en la c: \ directorio javalibs \ axis \ lib y escribe los nodos .classpath en un archivo llamado addto.classpath. (Nota: El carácter quilates^escapa a la < y> en la línea de comandos para que no hacen lo que suelen hacer.)

for %i in (c:\javalibs\axis2-1.4.1\lib\*.jar) do @echo  ^<classpathentry kind="var" path="AXIS2_HOME/lib/%~ni%~xi"/^> >> addto.classpath 

Se termina con algo como esto en el archivo ...

<classpathentry kind="var" path="AXIS2_HOME/lib/activation-1.1.jar"/> 
<classpathentry kind="var" path="AXIS2_HOME/lib/annogen-0.1.0.jar"/> 
<classpathentry kind="var" path="AXIS2_HOME/lib/axiom-api-1.2.7.jar"/> 
<classpathentry kind="var" path="AXIS2_HOME/lib/axiom-dom-1.2.7.jar"/> 
... 

Entonces puede copiar esas líneas y pegarlas en el lugar obvio en el archivo .classpath real.

0

Estoy usando una solución que desarrollé después de leer similar question. Lo estoy publicando aquí, porque esa pregunta tiene un alcance un poco diferente y puede que no sea obvio cómo usar las sugerencias escritas allí.

  1. Crear nuevo proyecto web dinámico (configuración por defecto es aceptable por lo que es rápido)
  2. directorio Borrar "lib" en WebContent/WEB-INF/
  3. recrear ese directorio, pero crea como enlace de la directorio de su proyecto principal, donde se encuentran sus tarros
  4. opción de la aplicación web en Bibliotecas Comprobar Orden y ficha Exportar en Java Build Path configuración de su proyecto
  5. Añadir este proyecto recién creado como una dependencia a su proyecto principal

Es irritante hacer esto para cada directorio de lib en su proyecto, pero es mejor que agregar jarras manualmente cada vez que hace svn update (de sus colegas más afortunados que usan Idea). Es una pena que Eclipse no tenga esta característica.

5

Mi colega implementado un contenedor de ruta de clases que se ve recursivamente para los frascos en un directorio dado dentro del espacio de trabajo, echar un vistazo a http://openscada.org/2010/05/31/adding-a-directory-as-class-path-to-eclipse/

El sitio de actualización se puede encontrar en http://repo.openscada.org/p2/bob/R

El plugin tiene licencia unter LGPL V3 y usted puede encontrar el código fuente bajo https://github.com/ctron/org.openscada.bob

+0

Se arregló el enlace muerto al artículo. ¡Esto era exactamente lo que estaba buscando! –

+0

gracias, también arreglé el enlace svn, nos mudamos a git hace un tiempo – Mauli

0

Puede utilizar una biblioteca de usuario en Eclipse que puede ser una forma útil de organizar un conjunto de archivos jar. Si tiene un conjunto de archivos jar que usa en varios proyectos, puede crear una Biblioteca de usuario para hacer referencia al conjunto de archivos jar. Como resultado, todo lo que necesitaría incluir en la ruta de compilación de su proyecto es la Biblioteca de usuarios en lugar de todos los archivos jar individuales.

<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/User Library name"/> 

http://www.avajava.com/tutorials/lessons/what-is-a-user-library-and-how-do-i-use-it.html;jsessionid=ACD75E0A035BDC3AC656B481A7830FB6

+1

El único problema con esto es que la ruta a los archivos jar en la biblioteca del usuario tiene que ser absoluta. Esto causa problemas en un entorno de equipo (control de versiones) donde las personas tienen diferentes rutas absolutas a su espacio de trabajo. Para solucionarlo, puede crear una VARIABLE DE VÍA CLASE, pero luego todos deben crear la variable y las cosas se vuelven confusas y rápidas. – gMale

0

I construyó una herramienta que genera la .classpath (y .project), pero requiere que se especifique la lista de los frascos en su construcción hormiga. Probablemente podría extenderse para leer una lista de archivos jar.

http://sweetened.googlecode.com/

Cuestiones relacionadas