在Wildfly 10中com.mysql.jdbc.Driver的类未找到异常

时间:2016-06-09 19:44:34

标签: java mysql jdbc wildfly

我正在使用Wildfly 10,我在standalone.xml中的数据源是:

        <datasources>
            <datasource jta="true" jndi-name="java:/MySqlDS" pool-name="MySQL_AAA" enabled="true" use-ccm="true">
                <connection-url>jdbc:mysql://localhost:3306/aaa</connection-url>
                <driver-class>com.mysql.jdbc.Driver</driver-class>
                <driver>mysql-connector-java-5.1.35-bin.jar_com.mysql.jdbc.Driver_5_1</driver>
                <security>
                    <user-name>root</user-name>
                    <password>root</password>
                </security>
                <validation>
                    <valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLValidConnectionChecker"/>
                    <background-validation>true</background-validation>
                    <exception-sorter class-name="org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLExceptionSorter"/>
                </validation>
            </datasource>

我在我的Java bean中运行此代码:

 Class.forName("com.mysql.jdbc.Driver");

我收到此错误消息:

10:29:59,210 ERROR [stderr] (default task-15) java.lang.ClassNotFoundException: com.mysql.jdbc.Driver from [Module "deployment.AAA_5.war:main" from Service Module Loader]


10:29:59,210 ERROR [stderr] (default task-15) at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:198)

我阅读的文档说我需要在我的lib文件夹中安装驱动程序,但这不起作用。我确信解决方案很简单,但我没有看到。有人能指出我正确的方向。我可以用作资源的一些文档很棒。

1 个答案:

答案 0 :(得分:1)

将mysql驱动程序放在wildfly的deployments文件夹中,它会自动部署,然后就可以使用了。
修改: 在wildfly中安装mysql JDBC驱动程序,因为类加载器行为导致部署无法访问mysql类,您只能通过jndi数据源访问数据库连接,并且不需要使用Class.forName()

InitialContext context=new InitialContext();
DataSource d=(DataSource)context.lookup(yourDataSourceName);

但是,如果您仍需要在项目中使用特定于mysql的类,则必须将驱动程序放在web-project/WEB-INF/lib文件夹中。(但请注意这一点,因为它与已部署的驱动程序无关)