Resource is out of sync with the file system

Al trabajar con Eclipse o JBuilder (en sus versiones basadas en Eclipse) puede que al cargar un proyecto te salga el siguiente error:

Resource is out of sync with the file system: /fichero/que/sea

Esto normalmente se debe a que se ha editado desde fuera de Eclipse algún fichero (o incluso a veces pasa, no sé porqué, cuando editas con un Eclipse en otro ordenador aunque sea justo la misma versión).

El error parece dramático y la primera vez que aparece temes por el código fuente y te maldices por no haber usado un control de versiones o por no haber hecho backup. Pero que va, la solución es tan tonta como hacer click con el botón derecho del ratón sobre el proyecto y darle a Refresh/Refrescar.

Una tontería, ya veis.

javax.mail.NoSuchProviderException: smtp

Si obtienes esta excepción al intentar enviar por JavaMail puede deberse a varios motivos pero los más usuales son:

  • No tienes el mail.jar (o smtp.jar) en el classpath.
  • Tienes varias copias de mail.jar (o smtp.jar) en el classpath.
  • Tienes el mail.jar (o smtp.jar) en el directorio compartido pero no le hace caso. Veamos este tercer caso:

Como sabrás se puede habilitar un directorio compartido (shared en nuestro ejemplo) y todas las clases y jar que contenga es como si estuvieran en el classpath. Esto se hace modificando el archivo conf/catalina.properties como sigue:

shared.loader=${catalina.home}/shared,${catalina.home}/shared/*.jar

De esta forma todo lo que metas en shared está compartido PERO, al menos en Tomcat 6, y por la razón que sea, si metes el mail.jar ahí no le va a hacer caso y te producirá la excepción “javax.mail.NoSuchProviderException: smtp“. Lo más adecuado es meterlo en $CATALINA_HOME/lib.

java.lang.NoClassDefFoundError: javax/mail/Address

Este es la excepción típica que aparece si no tienes las clases de JavaMail en tu classpath. Bájalas de aquí y recuerda que necesitarás si usas una versión del JDK inferior a la 1.6 también necesitarás en tu classpath el JavaBeans Activation Framework.