java.lang.ClassNotFoundException: DataSource dans Glassfish
-
05-07-2019 - |
Question
GlassFish 2.1 me pose un étrange problème: je suis un débutant avec ce conteneur et j'ai du mal à le comprendre.
J'ai une nouvelle installation de GlassFish 2.1 avec un pool de connexions JDBC appelé testDerbyPool. J'ai ensuite défini une ressource appelée jdbc / testDerbyPool pointant vers ce pool. Le type de ressource est javax.sql.DataSource et je peux envoyer une commande ping au pool avec succès.
J'ai alors une seule classe dans une application Web avec cette déclaration:
@Resource(name="jdbc/testDerbyPool")
private javax.sql.DataSource source;
Cette déclaration dans mon web.xml:
<resource-ref>
<res-ref-name>jdbc/testDerbyPool</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
Lorsque j'essaie de déployer l'application, le message d'erreur suivant s'affiche:
[#|2009-09-09T21:40:47.582+0100|SEVERE|sun-appserver9.1|javax.enterprise.system.container.web|_ThreadID=24;_ThreadName=Thread-32;_RequestID=1ca4ab80-ae39-4920-be18-f535b025bb51;|WebModule[/cptest1]PWC1275: Exception sending context initialized event to listener instance of class com.sun.faces.config.ConfigureListener
et une énorme trace de pile, à partir de:
java.lang.NoClassDefFoundError: LDataSource;
at java.lang.Class.getDeclaredFields0(Native Method)
at java.lang.Class.privateGetDeclaredFields(Class.java:2291)
avec la cause première:
Caused by: java.lang.ClassNotFoundException: DataSource
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1498)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
Je ne comprends pas comment DataSource peut être "introuvable"! Des idées?
La solution
La prochaine fois que je suis rentré après avoir posé la question, j’ai remarqué une erreur de construction dans Eclipse qui, d’une manière ou d’une autre, a obtenu un JRE supplémentaire dans le chemin marqué "non lié". En regardant autour de mon système, une mise à jour de la version JVM ponctuelle s’est automatiquement créée entre le démarrage d’Eclipse et la construction / déploiement.
Quoi qu'il en soit, supprimez-le, réessayez, travaillez.
Vérifiez donc les erreurs de construction et les problèmes de chemin de génération si vous rencontrez ce problème.