我在GlassFish 2.1中遇到了一个奇怪的问题 - 我是这个容器的初学者,我无法将其固定下来。
我有一个新安装的GlassFish 2.1,其中定义了一个名为testDerbyPool的JDBC连接池。然后我有一个名为jdbc / testDerbyPool的资源定义指向该池。资源类型是javax.sql.DataSource,我可以成功ping池。
然后,我在webapp中使用此声明创建了一个类:
@Resource(name="jdbc/testDerbyPool")
private javax.sql.DataSource source;
我的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>
当我尝试部署应用程序时,出现此错误:
[#|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
和一个巨大的堆栈跟踪,开始:
java.lang.NoClassDefFoundError: LDataSource;
at java.lang.Class.getDeclaredFields0(Native Method)
at java.lang.Class.privateGetDeclaredFields(Class.java:2291)
有根本原因:
Caused by: java.lang.ClassNotFoundException: DataSource
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1498)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
我不明白DataSource是如何“找不到”的!有什么想法吗?
答案 0 :(得分:2)
下次我回答问题之后,我发现Eclipse中存在构建错误,不知何故在标记为“未绑定”的路径中获得了额外的JRE。查看我的系统,我在启动Eclipse和执行构建/部署之间自动获得了JVM点发布更新。
无论如何,删除它,再次尝试,工作。
如果您发现此问题,请检查构建错误并构建路径问题。