Die JavaServerPages erlauben über JSP-Tags die saubere und gekapselte Einbindung von Logik auf JSP-Seiten ohne den HTML-Code mit durch Scriptelemente (Skriptlets, Expressions, Deklarationen) zu verschmutzen. Neben der JavaServer Pages Standard Tag Library kommt jede Webanwendung meist mit weiteren Tag-Libraries daher. Im Normalfall sind das zumindest die Bibliothek des verwendeten Webframeworks (etwa Struts) und eine Projekt-spezifische Custom-Tag-Library.
Ein Tag-Library besteht dabei immer aus Java-Klassen, die die Funktionalitäten bestimmter Tags implementieren und einer XML Datei, die die vorhandenen Tags der Bibliothek deklariert, spezifiziert und an ihre Implementation bindet. Diese Beschreibung, der Tag-Library-Descriptor (TLD), wird dann in den JSP-Seiten über ein Import-Statement wie das Folgende (es handelt sich um eine Struts-Bibliothek) eingebunden:
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean"%>
Die URI identifiziert dabei die Tag-Lib bzw. deren Descriptor. Kennt Eclipse nun diese URI und das zugehörige TLD klappt die Unterstützung beim Arbeiten mit den Tags hervorragend. Autocompletion, keine Warnings: alles funktioniert. Hat man nun jedoch eigene Tags und das TLD-File in einem bestimmten Projekt-Ordner, hilft nur die Angabe dessen URI. Liegt der Deskriptor nun aber nach dem Deployment in einem anderen Ordner oder ist die Angabe der URI aus einem anderen Grund nicht möglich, findet Eclipse den TLD nicht. Zahlreiche Warnings und der Verlust der Autocompletion auf jeder JSP sind die Folge. Ein Möglichkeit diese nun abzuschalten, wäre die JSP Compiler-Warnings in den Eclipse-Preferences zu deaktivieren. Nicht besonders schön…
Eine bessere Möglichkeit ist, die Bibliothek Eclipse global bekannt zu machen. Unter Window => Preferences => XML (oder WEB and XML) => XML Catalog kann man dafür User Specified Entries eintragen:

Und siehe da: keine Warnings mehr und die Autocompletion funktioniert wieder. Nachteil des Ganzen ist, dass immer eine globale TLD benutzt wird. Gibt es also mehrere Versionen in unterschiedlichen Projekten, bei denen neue Tags hinzu gekommen, alte entfernt oder Tag-Attribute modifiziert wurden sind, werden diese nicht vom Compiler berücksichtigt.