gpt4 book ai didi

java - Tomcat 找不到 MySQL 驱动程序

转载 作者:行者123 更新时间:2023-11-30 06:25:01 24 4
gpt4 key购买 nike

在 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)

Full log here

我已经下载了 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

我可以在我的登录或数据库文件中执行 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);
}

}

我的项目目录:

 .
├── 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

最佳答案

如果您确信驱动程序的 jar 文件已经放在 $TOMCAT_HOME/libmyapp/WEB-INF/lib 中,则问题的其他原因是时间问题。也许当您的 init() 方法运行时,并不是所有的类都已加载。

为了证明这一点,您能否在其他时间测试加载驱动程序类(例如:创建一个加载驱动程序类的虚拟测试 servlet)。如果它有效,那么这是一个时间问题

关于java - Tomcat 找不到 MySQL 驱动程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16269495/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com