Java连接Docker本地MariaDB出现No suitable driver异常求助
Java连接Docker中MariaDB数据库报错求助
我正在尝试使用Java程序连接Docker本地主机上的MariaDB数据库,开发环境为VSCode,采用Maven管理依赖。我将JDBC驱动mariadb-java-client-2.7.3.jar添加至资源文件夹,并在pom.xml中配置了依赖。运行程序时抛出如下异常:
错误代码: 0
SQL状态: 08001
java.sql.SQLException: No suitable driver found for jdbc:mariadb://localhost:3306/aufgabe_4
我查阅相关问题后,尝试在建立连接前添加Class.forName("org.mariadb.jdbc.Driver");语句,却触发了新的异常:
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
Unhandled exception type ClassNotFoundException
at com.datenbanken.aufgabe4.DBVerbindung.verbinden(DBVerbindung.java:15)
未找到可行解决方案,特此求助。以下是相关文件:
源码
package com.datenbanken.aufgabe4; import java.sql.Connection; import java.sql.DatabaseMetaData; import java.sql.DriverManager; import java.sql.SQLException; public class DBVerbindung { private Connection con = null; private String dbAdresse = "localhost:3306"; private String dbInstanz = "aufgabe_4"; public void verbinden(String nutzer, String passwort) { try { //Class.forName("org.mariadb.jdbc.Driver"); con = DriverManager.getConnection("jdbc:mariadb://" + dbAdresse + "/" + dbInstanz, nutzer, passwort); } catch (SQLException e) { ausnahmeAusgeben(e); } } private void ausnahmeAusgeben(SQLException e) { while (e != null) { System.err.println("Fehlercode: " + e.getErrorCode()); System.err.println("SQL State: " + e.getSQLState()); System.err.println(e); e = e.getNextException(); } } public void verbindungTrennen() { if (con == null) { System.out.println("keine Verbindung vorhanden"); return; } try { con.close(); } catch (SQLException e) { ausnahmeAusgeben(e); } } public void verbindungAnalysieren() { if (con == null) { System.out.println("keine Verbindung vorhanden"); return; } try { DatabaseMetaData dbmd = con.getMetaData(); System.out.println("DB-Name: " + dbmd.getDatabaseProductName() + "\nDB-Version: " + dbmd.getDatabaseMajorVersion() + "\nDB-Release: " + dbmd.getDriverMinorVersion() + "\nTransaktionen erlaubt: " + dbmd.supportsTransactions() + "\nbeachtet GroßKlein: " + dbmd.storesMixedCaseIdentifiers() + "\nunterstützt UNION: " + dbmd.supportsUnion() + "\nmax. Prozedurname: " + dbmd.getMaxProcedureNameLength()); } catch (SQLException e) { ausnahmeAusgeben(e); } } public static void main(String[] s) { DBVerbindung db = new DBVerbindung(); db.verbinden("root", "bitnami"); db.verbindungAnalysieren(); db.verbindungTrennen(); } }
初始pom.xml
<?xml version="1.0" encoding="UTF-8"?> <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>com.datenbanken.aufgabe4</groupId> <artifactId>aufgabe4</artifactId> <version>1.0-SNAPSHOT</version> <properties> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> </properties> <dependency> <groupId>com.datenbanken.aufgabe4</groupId> <artifactId>aufgabe4</artifactId> <version>2.7.3</version> <scope>system</scope> <systemPath>${project.basedir}/src/main/resources/mariadb-java-client-2.7.3.jar</systemPath> </dependency> </project>
更新后的pom.xml
<?xml version="1.0" encoding="UTF-8"?> <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>com.datenbanken.aufgabe4</groupId> <artifactId>aufgabe4</artifactId> <version>1.0-SNAPSHOT</version> <properties> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> </properties> <!-- https://mvnrepository.com/artifact/org.mariadb.jdbc/mariadb-java-client (Dependency direkt von Maven)--> <dependency> <groupId>org.mariadb.jdbc</groupId> <artifactId>mariadb-java-client</artifactId> <version>2.7.3</version> </dependency> </project>
文件夹结构

内容的提问来源于stack exchange,提问作者Ehrenmann
相关产品推荐
相关产品推荐

