Tomcat找不到MySQL Driver

Dan*_*nce 2 java tomcat

在JSF应用程序上工作并访问一个页面,该页面使用bean来检查数据库的某些凭据以对用户进行身份验证.

加载页面时出现Tomcat错误.

java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1680)
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1526)
java.lang.Class.forName0(Native Method)
java.lang.Class.forName(Class.java:188)
DB.init(DB.java:27)
Login.<init>(Login.java:19)
Run Code Online (Sandbox Code Playgroud)

完整记录在这里

我已下载mysql-connector-java-5.1.24-bin.jar并将其添加到构建路径中.我正在加载我的详细信息,形成一个如下所示的属性文件:

jdbc.url=jdbc:mysql://127.0.0.1:3306
jdbc.user=root
jdbc.password=
jdbc.driver=com.mysql.jdbc.Driver
Run Code Online (Sandbox Code Playgroud)

我可以import com.mysql.jdbc.Driver在我的登录或数据库文件中做一个没有问题,所以我不明白为什么网络应用程序在加载课程时遇到问题.

这是DB.java文件:

import java.io.FileInputStream;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Properties;

public class DB {

private static String url;
private static String username;
private static String password;

public static void init() throws IOException, ClassNotFoundException{

    Properties props = new Properties();
    FileInputStream in = new FileInputStream("/home/dan/workspace/DeutschAkademie/WebContent/db.prop");
    props.load(in);

    String driver = props.getProperty("jdbc.driver");
    url = props.getProperty("jdbc.url");
    username = props.getProperty("jdbc.username");
    password = props.getProperty("jdbc.password");

    if(username == null) username = "";
    if(password == null) password = "";
    Class.forName(driver);

}

public static Connection getConnection () throws SQLException {
    return DriverManager.getConnection(url, username, password);
}

}
Run Code Online (Sandbox Code Playgroud)

我的项目目录:

 .
??? build
?   ??? classes
?       ??? DB.class
?       ??? Login.class
?       ??? User.class
??? database.sql
??? mysql-connector-java-5.1.24-bin.jar
??? src
?   ??? DB.java
?   ??? Login.java
?   ??? User.java
??? WebContent
    ??? add-user.xhtml
    ??? css
    ?   ??? bootstrap.min.css
    ?   ??? button.css
    ?   ??? font-awesome.css
    ?   ??? font-awesome-ie7.min.css
    ?   ??? font-awesome.min.css
    ?   ??? global.css
    ?   ??? typography.css
    ??? css.xhtml
    ??? db.prop
    ??? font
    ??? history.xhtml
    ??? home.xhtml
    ??? login.xhtml
    ??? META-INF
    ?   ??? MANIFEST.MF
    ??? navbar.xhtml
    ??? test.xhtml
    ??? WEB-INF
    ?   ??? faces-config.xml
    ?   ??? inc
    ?   ??? lib
    ?   ?   ??? javax.faces-2.1.9.jar
    ?   ?   ??? mysql-connector-java-5.1.24-bin.jar
    ?   ??? web.xml
    ??? words.xhtml
Run Code Online (Sandbox Code Playgroud)

ger*_*tan 5

如果您确信已经放置了驱动程序的jar文件,$TOMCAT_HOME/lib或者myapp/WEB-INF/lib问题的其他原因是计时问题.也许当您的init()方法运行时,并非所有类都已加载.

为了证明这一点,你可以在其他时间测试加载驱动程序类(例如:创建一个加载驱动程序类的虚拟测试servlet).如果它工作,那么这是一个时间问题