Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java.lang.ClassNotFoundException:com.mysql.jdbc.Driver(maven+;jboss)_Java_Mysql_Maven_Jboss_Jboss7.x - Fatal编程技术网

java.lang.ClassNotFoundException:com.mysql.jdbc.Driver(maven+;jboss)

java.lang.ClassNotFoundException:com.mysql.jdbc.Driver(maven+;jboss),java,mysql,maven,jboss,jboss7.x,Java,Mysql,Maven,Jboss,Jboss7.x,maven pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0

maven pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>Test</groupId>
<artifactId>Test</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>

<name>Test</name>
<url>http://maven.apache.org</url>

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <source>1.6</source>
                <target>1.6</target>
            </configuration>
        </plugin>
    </plugins>
</build>
<dependencies>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>3.8.1</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>servlet-api</artifactId>
        <version>2.5</version>
    </dependency>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.18</version>
    </dependency>
</dependencies>

但是我已经检查过,我在jboss-as-7.0.2.Final\standalone\deployments\Test.war\WEB-INF\lib中有mysql.jar,并且它有com.mysql.jdbc.Driver类。

作为一项规则,您不应该在war文件中包含jdbc驱动程序

我建议您将驱动程序标记为提供的,并将其添加到服务器的lib目录中

另外,我不知道你为什么要使用

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

在你的代码中。为什么不让contain管理您的连接和事务?

发生此错误是因为您的mysql jar不在运行时类路径上。如果您使用的是maven

  • 打开EAR/web项目属性
  • 单击“部署程序集”
  • 点击“添加…”
  • 选择“Java构建路径条目”
  • 点击“下一步”
  • 选择“Maven依赖项”
  • 单击“完成”

  • 看起来您正在使用JBossAS7。检查此处的说明:

    基本上,你应该

  • 安装mysql连接器
  • 使用它创建一个数据源
  • 使用JNDI配置引用该数据源

  • 当容器不提供数据源时,Class.forName()是一个常用的习惯用法。在现代JavaEE服务器中,提供了它们。

    我有一个稍微不同的用例。我在一个独立的应用程序中使用apache的BasicDataSource

    我得到这个异常是因为我用
    com.mysql.jdbc.Driver.class.toString()
    而不是
    “com.mysql.jdbc.Drive”
    作为字符串调用了
    setdrivercassname
    (因此编译时检查确保在版本升级过程中没有输入错误或驱动程序的位置没有改变…等等)

    但是

    当您查看驱动程序的实现时,它有一个静态初始化块:

    static {
      try {
        java.sql.DriverManager.registerDriver(new Driver());
      } catch (SQLException E) {
        throw new RuntimeException("Can't register driver!");
      }
    }
    
    当我编写
    com.mysql.jdbc.Driver.class.toString()
    时,这个初始化块执行得太早,导致后来抛出错误的
    ClassNotFoundException
    。一旦我切换到
    “com.mysql.jdbc.Driver”
    我的应用程序就开始工作了


    这是静态变为邪恶的情况:)

    依赖项应标记为
    提供的
    mysql.jar
    文件的确切名称是什么ᴀᴠᴇ NᴇᴡᴛᴏɴThx,我不知道,我会试试。@ring-bearer-mysql-connector-java-5.1.18。jar@itun-您如何执行代码?通过构建、IDE或命令行?通过IDE(它有特定的JBoss Maven插件来部署JBoss AS7的项目),服务器上没有lib目录,因此这个答案也无法解决这个问题。正确的方法是使用容器提供的数据源。
    static {
      try {
        java.sql.DriverManager.registerDriver(new Driver());
      } catch (SQLException E) {
        throw new RuntimeException("Can't register driver!");
      }
    }