2011-09-30 35 views
7

Hay un archivo de clase TagAttributeInfo que está debajo de dos de mis archivos jar.Cómo dar prioridad a un archivo jar en classpath eclipse?

j2ee-6.1.jar,servlet-api-2.3.jar . 

Ahora necesito esa clase para ser llamado desde j2ee-6.1.jar pero en tiempo de ejecución, que está tomando la clase de servlet-api-2.3.jar, lo que no quiero. ¿Alguien me puede ayudar a priorizar el archivo jar en la ruta de la clase para que dé la primera prioridad al j2ee-6.1.jar?

Respuesta

13

lo mueve en el orden de ruta de clase (clic derecho en el proyecto, seleccione Build Path, seguido de Configurar Build Path y luego Orden y Exportación)

3

Se usará el primer jar que encuentre en el classpath que tenga la clase que está buscando. Para que pueda priorizar su clase poniendo su jar al comienzo de la ruta de clase.

¿Cómo harías exactamente esto en Eclipse? No estoy seguro, pero es probable que haya alguna lista de dependencias de proyectos que correspondan a los jar en classpath, y con suerte puedes ordenar los elementos de esa lista y poner tu jar en la parte superior. Intente buscarlo en el panel de configuración del proyecto.

1

No sé si es parte de la especificación, pero colocando el jar de prioridad "más alta" anteriormente en el classpath funciona cuando he hecho esto en el pasado.

1

¿Estás seguro de que necesita dos archivos jar?

De todos modos, en el cuadro de diálogo Crear ruta, puede especificar el orden en que se buscarán los archivos jar.

6
  • entra en tu Propiedades del proyecto> Build Path.
  • En la pestaña Orden y exportación, encontrar j2ee-6.1.jar y pulse el botón Hasta para moverlo más arriba en el orden de ruta de clase. Siga presionando Arriba hasta que esté por encima de servlet-api-2.3.jar.
  • Por último, presione OK.
3
  1. quitar servlet-api-2.3.jar, no lo necesita.
  2. o mueve j2ee-6.1.jar más arriba que servlet-api-2.3.jar en la lista de lib.
1

Solo uno de estos archivos jar debe estar en su ruta de clase, para poder compilar sus clases. Pero en tiempo de ejecución, el archivo jar estará en el classpath de su servidor de aplicaciones, y no podrá reemplazarlo con el otro.

Si su contenedor es un contenedor JEE6, utiliza servlet 3.0 y el servlet-api-2.3.jar está obsoleto y no debe estar en el classpath. Si su contenedor solo admite servlet api 2.3, entonces no podrá usar clases del jar jee6 en este contenedor.

Cuestiones relacionadas