我无法访问Firebird配置字符串,它在MySQL中工作得很好。
package testej;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class TesteConexao {
public static void main(String[] args) {
try {
Class.forName("org.firebirdsql.jdbc.FBDriver");
String URL = "jdbc:firebirdsql:localhost/3050:C:/DB/DASHBOARD.FDB";
String usuario = "SYSDBA";
String senha = "masterkey";
Connection conn = DriverManager.getConnection(URL, usuario, senha);
System.out.println("Conexão efetuada com sucesso!");
conn.close();
} catch (ClassNotFoundException | SQLException ex) {
ex.printStackTrace();
}
}
}
java版本"1.8.0_311",我的火鸟是3.0.10 33601 x64, JDBC驱动程序jaybird4.0.8 1.8,jaybird 3.0.12 1.8, jaxb.2.3.0
java.lang.ClassNotFoundException: org.firebirdsql.jdbc.FBDriver
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:520)
at java.base/java.lang.Class.forName0(Native Method)
at java.base/java.lang.Class.forName(Class.java:375)
at testej.TesteConexao.main(TesteConexao.java:12)
这个错误意味着Jaybird不在类路径上。在运行应用程序时,确保指定了正确的类路径(需要同时使用jaybird-4.0.8.java8.jar
和connector-api-1.5.jar
):
例如:
java -cp .;D:libsjaybird-4.0.8.java8jaybird-4.0.8.java8.jar;D:libsjaybird-4.0.8.java8libconnector-api-1.5.jar testej.TesteConexao
或(only)jaybird-full-4.0.8.java8.jar
:
java -cp .;D:libsjaybird-4.0.8.java8jaybird-full-4.0.8.java8.jar testej.TesteConexao
当从Linux运行时,使用:
作为类路径分隔符,而不是;
。
作为题外话,自Java 6或更高版本的Jaybird 2.2以来,已经没有必要显式地使用Class.forName
加载驱动程序了。