未设置将MySQL数据库连接到Glassfish类路径或类名错误

时间:2011-12-01 23:43:00

标签: mysql eclipse java-ee glassfish

我正在换掉一个用于MySQL的德比数据库。我以前一切都工作但是在我认为正确的配置之后我得到了错误:

引起:javax.resource.ResourceException:类名错误或类路径未设置为:com.mysql.jdbc.jdbc2.optional.MysqlDataSource

控制台的完整错误输出:

Caused by: javax.resource.ResourceException: Class name is wrong or classpath is not set for : com.mysql.jdbc.jdbc2.optional.MysqlDataSource
at com.sun.gjc.common.DataSourceObjectBuilder.getDataSourceObject(DataSourceObjectBuilder.java:292)
at com.sun.gjc.common.DataSourceObjectBuilder.constructDataSourceObject(DataSourceObjectBuilder.java:114)
at com.sun.gjc.spi.ManagedConnectionFactory.getDataSource(ManagedConnectionFactory.java:1292)
at com.sun.gjc.spi.DSManagedConnectionFactory.getDataSource(DSManagedConnectionFactory.java:148)
at com.sun.gjc.spi.DSManagedConnectionFactory.createManagedConnection(DSManagedConnectionFactory.java:101)
at com.sun.enterprise.resource.allocator.LocalTxConnectorAllocator.createResource(LocalTxConnectorAllocator.java:87)

我已经仔细检查了一些名称,连接池和其他资源。我还在两个项目中将MySQL驱动程序.jars添加到glassfish库中。数据库肯定是通过eclipse正常工作的,因为我能够查看表并在eclipse的数据库上下文中显示资源。所以我知道至少那些司机正在正确地工作。 persistence.xml文件看起来也不错。它引用了jdbc / mydatabase jndi引用,并且默认选择JTA作为manament类型。

有没有人有其他建议?谢谢

5 个答案:

答案 0 :(得分:37)

  

我还在两个项目中将MySQL驱动程序.jars添加到glassfish库中。

显然做得不对。 JAR必须进入Glassfish安装的/glassfish/domains/[domainname]/lib/ext文件夹,其中[domainname]通常默认为domain1。您可以而且不应该从Eclipse端配置它。

答案 1 :(得分:23)

看起来我回复的时间很晚,但是那些会引用此主题的人可能会发现以下信息很有用。所以我在这里发帖子:

  1. http://dev.mysql.com/downloads/connector/j/5.0.html
  2. 下载连接器Jar
  3. 解压缩包并复制mysql-connector-java-verno-bin.jar
  4. 在[GlassFish安装目录] / domains / [域名] / lib文件夹
  5. 中过去了
  6. 重新启动域并ping以检查JDBC连接池中的连接
  7. 你去吧。如果您的MySql正在运行,那么它将成功ping数据库

答案 2 :(得分:5)

我将jar文件复制到$glassfish_install_folder\glassfish\lib,之后就可以了。我使用 glassfish 4.0

从oracle检查link

答案 3 :(得分:1)

我在2018年遇到此问题,并要注意,如果您使用的是glassfish 4(当前为5),则似乎必须使用Connector / J 5.1.47版本才能工作。如果使用当前版本(Connector / J 8.0.13),则无论将.jar文件放在何处,原始问题中提到的异常都会不断出现。

使用Connector / J 5.1.47,它可以完美工作。

答案 4 :(得分:0)

我在2019年遇到了此问题,并要注意,如果您使用的是docker image payara/server-full(到目前为止,我使用的是5.194),那么我放置驱动程序jar的位置是:

/opt/payara/appserver/glassfish/domains/production/lib/

最后,我在payara服务器的Dockerfile中做了这样的事情:

RUN wget http://central.maven.org/maven2/org/mariadb/jdbc/mariadb-java-client/2.2.0/mariadb-java-client-2.2.0.jar \
    -O /opt/payara/appserver/glassfish/domains/production/lib/mariadb-java-client-2.2.0.jar