java.lang.ClassNotFoundException:Glassfish 中的数据源

Posted

技术标签:

【中文标题】java.lang.ClassNotFoundException:Glassfish 中的数据源【英文标题】:java.lang.ClassNotFoundException: DataSource in Glassfish 【发布时间】:2009-09-09 20:52:35 【问题描述】:

我在 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)

我不明白如何“找不到”数据源!有什么想法吗?

【问题讨论】:

确保您的应用程序没有自己的 javax.sql.DataSource 副本,它可能与 Glassfish 的副本发生冲突。 这可能就是正在发生的事情,干杯 【参考方案1】:

下次我在问完问题后返回时,我注意到 Eclipse 中出现构建错误,不知何故在标记为“未绑定”的路径中获得了一个额外的 JRE。环顾我的系统,我在启动 Eclipse 和进行构建/部署之间自动获得了 JVM 点发布更新。

无论如何,删除它,再次尝试,工作。

如果您发现此问题,请检查构建错误和构建路径问题。

【讨论】:

感谢您建议查找构建错误和警告。从早上开始就收到 NoClassDefFound 异常,原因被记录为警告。

以上是关于java.lang.ClassNotFoundException:Glassfish 中的数据源的主要内容,如果未能解决你的问题,请参考以下文章