2010-10-19 7 views
2

Dans la perspective Eclipse Java EE, comment ajouter un pot partagé à un projet utilitaire? Pour élaborer: Dans un projet Java "normal" (non Java EE), il existe des bibliothèques référencées dans lesquelles vous pouvez placer des fichiers jar. Dans un projet Web dynamique, il existe des bibliothèques d'applications Web. Dans un projet utilitaire, seules les bibliothèques EAR n'apparaissent pas pertinentes (des bibliothèques référencées apparaissent dans la perspective Explorateur de packages en Java, mais pas dans l'Explorateur de projet dans la perspective Java EE). Je suis allé de l'avant et ajouté un répertoire/lib sous ma racine de projet utilitaire, et mettre un pot là (j'ai oublié si je l'ai fait dans la perspective du paquet Java, ou seulement dans le système de fichiers). Je l'ai ajouté à Java Build Path et tout compile, y compris les projets Web dynamiques qui référencent le projet utilitaire. Mais quand je déploie sur Tomcat, j'obtiens ClassNotFoundException pour les classes dans le jar thirdparty. Comment puis-je ajouter le fichier thirdparty au projet utilitaire de manière à le déployer dans le cadre de l'application Web?Comment inclure des bibliothèques tierces dans Utilty Project?

Répondre

2

Je lui ai répondu quelque chose de semblable auparavant.

Eclipse and How it Handles JARS -- Odd Case

Essentiellement, il y a une différence entre l'accumulation et à l'exécution en temps dépendances JAR. Pour l'inclusion dans les fichiers EAR/WAR, vous devez utiliser les panneaux "Deployment Assembly".

+0

Cela semble être le bon chemin, mais je ne vois pas le panneau Assemblage de déploiement. Je suis sur Eclipse 3.5 ... – ykaganovich

+1

Ok, j'ai migré vers Helios en utilisant http://wiki.eclipse.org/FAQ_How_do_I_upgrade_Eclipse%3F et je peux publier les fichiers jar tiers du projet utilitaire dans l'assemblage de déploiement de projet Web dynamique. Je préférerais que les projets Web dynamiques récupèrent automatiquement les paramètres du projet utilitaire, est-ce possible? Sinon, cette solution fonctionne, je dois juste jouer avec les paramètres de l'assemblage de déploiement pour ** chaque ** projet Web dynamique qui fait référence au projet utilitaire ... – ykaganovich

+0

+1, bonne question. À ma connaissance, ceci n'est pas implémenté dans WTP/Eclipse et je pense que c'est pour une bonne raison. Pour l'assembly de déploiement, Eclipse doit connaître le chemin de classe * runtime * du module utilitaire; ce n'est pas forcément identique au classpath de construction. Par exemple: disons que votre projet utilitaire nécessite des interfaces Servlet à compiler. Vous ajouteriez le fichier JAR requis au buildpath de votre utilitaire, afin qu'il soit compilé. Génial. Mais serait-il logique d'ajouter le même JAR à la webapp? définitivement et absolument _not_, car le JAR est fourni par le runtime de la webapp. – Isaac

0

Je ne suis pas sûr de comprendre exactement votre question, mais vous pouvez simplement un clic droit sur votre projet, vous sélectionnez PropertiesJava Build path>Libraries, puis ajoutez votre JAR dans la liste des bibliothèques parties tierces. Cela ajoutera votre jar dans le projet classpath. Une autre façon est d'utiliser la solution (moche) de créer un répertoire lib, y mettre toutes les bibliothèques tierces, et ajouter ce répertoire dans le classpath de votre projet (comme pour la solution précédente, comme vous pouvez ajouter un répertoire entier dans le projet Eclipse).

La dernière solution est de confier la responsabilité de la gestion des dépendances à un véritable système de construction, tels que Maven, Ant + Ivy, Gradle ...

Questions connexes