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

java.lang.ClassNotFoundException:Glassfish中的数据源,java,glassfish,classnotfound,Java,Glassfish,Classnotfound,我在GlassFish2.1中遇到了一个奇怪的问题-我是这个容器的初学者,我很难把它固定下来 我新安装了GlassFish 2.1,其中定义了一个名为testDerbyPool的JDBC连接池。然后,我定义了一个名为jdbc/testDerbyPool的资源,指向该池。资源类型是javax.sql.DataSource,我可以成功地ping池 然后,我在一个webapp中有一个类,声明如下: @Resource(name="jdbc/testDerbyPool") private javax.s

我在GlassFish2.1中遇到了一个奇怪的问题-我是这个容器的初学者,我很难把它固定下来

我新安装了GlassFish 2.1,其中定义了一个名为testDerbyPool的JDBC连接池。然后,我定义了一个名为jdbc/testDerbyPool的资源,指向该池。资源类型是javax.sql.DataSource,我可以成功地ping池

然后,我在一个webapp中有一个类,声明如下:

@Resource(name="jdbc/testDerbyPool")
private javax.sql.DataSource source;
my 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>
和一个巨大的堆栈跟踪,开始:

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)

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

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

不管怎样,把它取下来,再试一次,成功了


因此,如果您看到此问题,请检查生成错误和生成路径问题。

确保您的应用程序没有自己的javax.sql.DataSource副本,它可能与Glassfish的副本冲突。这可能就是发生的情况,感谢您建议查找生成错误和警告。从早上开始收到NoClassDefFound异常,原因记录为警告。
Caused by: java.lang.ClassNotFoundException: DataSource
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1498)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)