java - 无法实例化驱动程序类 "com.mysql.cj.jdbc.Driver": when deploying war file in jboss

标签 java mysql jakarta-ee jboss jboss7.x

我创建了一个 Web 应用程序,并且使用简单的 jdbc 连接机制处理数据库连接。构建 WAR 文件后,我验证了 WEB-INF/lib 是否有 mysql 连接器 库,并且我正在使用 mysql 1.8 java 连接器强>。但是当我尝试在 jboss 中部署应用程序时,我收到了几个错误和警告。项目是从 java 1.7 构建的,jboss 服务器使用相同的 jdk 版本运行。

Unable to instantiate driver class "com.mysql.cj.jdbc.Driver": 
java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver from [Module 
"deployment.NEWAPPLICATION.war:main" from Service Module Loader]

我不知道为什么我会收到此错误,因为 mysql 连接器可以在类路径上找到,而我在同一堆栈跟踪中遇到的另一个问题是这个

 Failed to define class com.mysql.cj.jdbc.Driver in Module 
 "deployment.NEWAPPLICATION.war:main" from Service Module Loader: 
 java.lang.UnsupportedClassVersionError: com/mysql/cj/jdbc/Driver : 
 Unsupported major.minor version 52.0

并且有许多日志显示无法从com/mysql/cj索引类

Could not index class com/mysql/cj/MysqlxSession.class at 
 /content/NEWAPPLICATION.war/WEB-INF/lib/mysql-connector-java-8.0.16.jar: 
 java.lang.IllegalStateException: Unknown tag! pos=32 poolCount = 334

我并没有真正使用过 WAR 应用程序,也没有真正使用过 Jboss 服务器。我自己无法弄清楚这一点,任何帮助将不胜感激。

最佳答案

你说你使用的是Java 1.7,但看起来MySQL驱动程序是用Java 1.8编译的。升级您的 JRE,或者查找与 Java 1.7 兼容的驱动程序。您需要 Connector/J 5.1,而不是 8。您可以在 The MySQL Archive 找到它。

编辑:如果您使用 Maven,则可以使用此工件:

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.47</version>
</dependency>

关于java - 无法实例化驱动程序类 "com.mysql.cj.jdbc.Driver": when deploying war file in jboss,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56668222/

相关文章:

java - EJB 规范和 Java 版本 - 向后兼容性

java - 为什么在 Java EE 中使用 CDI

java - 在Java中的非静态类中声明静态变量

Mysql:更改日期格式

java - 使用 SnakeYaml 转储带引号的值

MySQL UPDATE = 更新具有相同内容的字段是否有任何开销?

mysql - 替代sql server 2005

java - 如何在 JBoss EAP6/AS7 中应用安全约束前的过滤器

java - 了解 Spring Boot

java - 从文件中读取内容并发送电子邮件